构建docker基础镜像并部署LNMP网站平台
发布日期:2021-05-15 07:34:46 浏览次数:26 分类:原创文章

本文共 5820 字,大约阅读时间需要 19 分钟。

构建docker基础镜像并部署LNMP网站平台

编写dockerfile时,尽量使用&&连接shell命令。尽量少使用 RUNCOPYADD 指令,因为这三个指令每次使用都会在镜像中增加分层(layers),导致最终生成的镜像变大。使用其他指令生成的是临时过渡层,不会增加镜像的大小。

构建nginx基础镜像

# Dockerfile-nginx 写入以下内容FROM centos:7RUN yum install -y gcc gcc-c++ make \     openssl-devel pcre-devel gd-devel \     iproute net-tools telnet wget curl && \     yum clean all && \     rm -rf /var/cache/yum/*  # 清理yum缓存以减小镜像     RUN wget http://nginx.org/download/nginx-1.15.5.tar.gz && \     tar -zxf nginx-1.15.5.tar.gz && \     cd nginx-1.15.5 && \     ./configure --prefix=/usr/local/nginx \     --with-http_ssl_module --with-http_stub_status_module && \     make -j 4 && make install && \     rm -rf /usr/local/nginx/html/* && \     echo "ok" >> /usr/local/nginx/html/status.html && \     cd / && rm -rf nginx-1.12.2* && \     ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime     ENV PATH $PATH:/usr/local/nginx/sbinCOPY nginx.conf /usr/local/nginx/conf/nginx.confWORKDIR /usr/local/nginxEXPOSE 80CMD ["nginx", "-g", "daemon off;"]
# 创建镜像$ docker build -t nginx:v1 -f Dockerfile-nginx .  # .表示将当前目录中的文件打包为镜像$ docker images  # 查看镜像$ docker run -d --name nginx01 -p 88:80 nginx:v1  # 使用创建的镜像运行容器# 访问http://主机IP:88/status.html,显示ok# # 利用已有镜像创建新的镜像$ echo "Good day, mate" >> index.html$ vim Dockerfile-index  # 写入以下内容FROM nginx:v1COPY index.html /usr/local/nginx/html#$ docker build -t nginx:v2 -f Dockerfile-index .$ docker images  # 查看镜像$ docker run -d --name nginx02 -p 89:80 nginx:v2# 访问http://主机IP:89,显示Good day, mate

如果镜像拉取速度太慢,修改/etc/docker/daemon.json配置文件如下。

$ vi /etc/docker/daemon.json{   	"registry-mirrors": ["https://registry.dockercn.com","https://mj9kvemk.mirror.aliyuncs.com"]}

构建tomcat基础镜像

# Dockerfile-tomcat 写入以下内容FROM centos:7ENV VERSION=8.0.46RUN yum install java-1.8.0-openjdk wget curl unzip iproute net-tools -y && \     yum clean all && rm -rf /var/cache/yum/*     RUN wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.0.46/bin/apache-tomcat-${VERSION}.tar.gz && \     tar -zxf apache-tomcat-${VERSION}.tar.gz && \     mv apache-tomcat-${VERSION} /usr/local/tomcat && \     rm -rf apache-tomcat-${VERSION}.tar.gz /usr/local/tomcat/webapps/* && \     mkdir /usr/local/tomcat/webapps/test && \     echo "ok" > /usr/local/tomcat/webapps/test/status.html && \     sed -i '1a JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom"' usr/local/tomcat/bin/catalina.sh && \     ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime     ENV PATH $PATH:/usr/local/tomcat/binWORKDIR /usr/local/tomcatEXPOSE 8080CMD ["catalina.sh", "run"]  # 前台运行tomcat
# 创建镜像$ docker build -t tomcat:v1 -f Dockerfile-tomcat .$ docker run -d --name tomcat01 -p 8089:8080 tomcat:v1  # tomcat端口是8080# 访问http://主机IP:8089/test/status.html# # 创建新的镜像并部署war包(需要先去jenkins.io下载jenkins.war包)$ vim Dockerfile  # 写入以下内容FROM tomcat:v1COPY jenkins.war /usr/local/tomcat/webapps/ROOT.war# 创建镜像并运行tomcat容器$ docker build -t tomcat:v2 -f Dockerfile .$ docker run -d --name tomcat02 -p 8088:8080 tomcat:v2# 检查容器中部署的war包$ docker exec -it tomcat02 bash# ls webapps/ROOT   ROOT.war   test# 访问http://主机IP:8088,可以查看部署的jenkins

构建php基础镜像

# Dockerfile-php 写入以下内容FROM centos:7RUN yum install epel-release -y && \     yum install -y gcc gcc-c++ make gd-devel libxml2-devel \     libcurl-devel libjpeg-devel libpng-devel openssl-devel \     libmcrypt-devel libxslt-devel libtidy-devel autoconf \     iproute net-tools telnet wget curl && \     yum clean all && \     rm -rf /var/cache/yum/*     RUN wget http://docs.php.net/distributions/php-5.6.36.tar.gz && \     tar -zxf php-5.6.36.tar.gz && \     cd php-5.6.36 && \     ./configure --prefix=/usr/local/php \     --with-config-file-path=/usr/local/php/etc \     --enable-fpm --enable-opcache \     --with-mysql --with-mysqli  --with-pdo-mysql \     --with-openssl --with-zlib --with-curl --with-gd \     --with-jpeg-dir --with-png-dir --with-freetype-dir \     --enable-mbstring --with-mcrypt --enable-hash && \     make -j 4 && make install && \     cp php.ini-production /usr/local/php/etc/php.ini && \     cp sapi/fpm/php-fpm.conf /usr/local/php/etc/php-fpm.conf && \     sed -i "90a \daemonize = no" /usr/local/php/etc/php-fpm.conf && \     mkdir /usr/local/php/log && \     cd / && rm -rf php* && \     ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime     # 需要准备php.ini和php-fpm.conf配置文件ENV PATH $PATH:/usr/local/php/sbin:/usr/local/php/binCOPY php.ini /usr/local/php/etc/COPY php-fpm.conf /usr/local/php/etc/WORKDIR /usr/local/phpEXPOSE 9000CMD ["php-fpm"]
# 创建镜像$ docker build -t php:v1 -f Dockerfile-php .$ docker images# 运行容器并检查是否正常运行$ docker run -d --name php01 php:v1$ docker ps -l$ docker exec -it php01 bash# pwd# ps -ef# ./bin/php -v  # 查看php版本

快速部署LNMP网站平台

下面利用前面构建的基础镜像来搭建一个LNMP网站平台(Linux + nginx + mysql + php)。

# 创建自定义网络$ docker network create lnmp# 创建mysql容器$ docker run -d --name lnmp_mysql --net lnmp \--mount src=mysql-vol,dst=/var/lib/mysql \-e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=wordpress mysql:5.7 --character-set-server=utf8# 创建php容器$ docker run -d --name lnmp_php --net lnmp \--mount src=wwwroot,dst=/wwwroot php:v1# 创建nginx容器(docker主机上需准备nginx.conf配置文件)$ docker run -d --name lnmp_nginx --net lnmp -p 8000:80 \--mount type=bind,src=$(pwd)/nginx.conf,dst=/usr/local/nginx/conf/nginx.conf \--mount src=wwwroot,dst=/wwwroot nginx:v1# 测试$ cd /var/lib/docker/volumes/wwwroot/_data/$ vi test.php  # 写入<?php phpinfo();? ># 访问http://主机IP:8000/test.php# 部署wordpress博客$ wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz$ tar -zxf wordpress-4.9.4-zh_CN.tar.gz  # 解压后得到wordpress文件夹# 部署wordpress$ cp -r wordpress /var/lib/docker/volumes/wwwroot/_data/# 访问http://主机IP:8000/wordpress/# 利用之前创建mysql容器时的信息配置wordpress# 数据库名:wordpress,用户名:root,密码:123456,数据库主机:lnmp_mysql

如果不能自动创建wp-config.php配置文件,可能需要复制网站给出的配置文件内容,并在/var/lib/docker/volumes/wwwroot/_data/wordpress/目录下创建该配置文件。配置好的wordpress网站如下。

在这里插入图片描述

上一篇:部署和使用Harbor镜像仓库
下一篇:Dockerfile的介绍与使用

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月11日 11时07分21秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章