千家信息网

Docker入门与应用实战之Dockerfile

发表于:2025-01-26 作者:千家信息网编辑
千家信息网最后更新 2025年01月26日,1.Dockerfile格式2. Dockerfile指令3. Build镜像4. 构建Nginx,PHP,Tomcat基础镜像前提:上传文件dockerfile .zip和wordpress-4.9
千家信息网最后更新 2025年01月26日Docker入门与应用实战之Dockerfile


1.Dockerfile格式


2. Dockerfile指令


3. Build镜像


4. 构建Nginx,PHP,Tomcat基础镜像

前提:上传文件dockerfile .zip和wordpress-4.9.4-zh_CN.tar.gz

[root@localhost first_stage]# unzip dockerfile\ .zip -d Dockerfile/Archive:  dockerfile .zip  inflating: Dockerfile/Dockerfile-nginx    inflating: Dockerfile/Dockerfile-php    inflating: Dockerfile/Dockerfile-tomcat    inflating: Dockerfile/nginx.conf     inflating: Dockerfile/php-fpm.conf    inflating: Dockerfile/php.ini

构建Nginx基础镜像:

[root@localhost first_stage]# sed -i 's/1.12.2/1.15.5/g' Dockerfile-nginx[root@localhost first_stage]# cat Dockerfile-nginxFROM centos:7MAINTAINER www.dengaosky.comRUN 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/*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.15.5* && \    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeENV PATH $PATH:/usr/local/nginx/sbinCOPY nginx.conf /usr/local/nginx/conf/nginx.confWORKDIR /usr/local/nginxEXPOSE 80CMD ["nginx", "-g", "daemon off;"][root@localhost first_stage]# docker build -t  nginx:v1 -f Dockerfile-nginx .[root@localhost first_stage]# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEnginx               v1                  d25e10f6dc2f        3 minutes ago       369MBcentos              7                   9f38484d220f        4 months ago        202MB[root@localhost first_stage]#

构建PHP基础镜像:

[root@localhost first_stage]# cat Dockerfile-php FROM centos:7MAINTAINER www.dengaosky.comRUN 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/localtimeENV PATH $PATH:/usr/local/php/sbinCOPY php.ini /usr/local/php/etc/COPY php-fpm.conf /usr/local/php/etc/WORKDIR /usr/local/phpEXPOSE 9000CMD ["php-fpm"][root@localhost first_stage]# docker build -t  php:v1 -f Dockerfile-php .[root@localhost first_stage]# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEphp                 v1                  402fe17abd8f        4 seconds ago       522MBnginx               v1                  d25e10f6dc2f        15 minutes ago      369MBcentos              7                   9f38484d220f        4 months ago        202MB[root@localhost first_stage]#

构建Tomcat基础镜像:

[root@localhost first_stage]# sed -i "s/8.0.52/8.0.46/g" Dockerfile-tomcat [root@localhost first_stage]# cat Dockerfile-tomcat FROM centos:7MAINTAINER www.dengaosky.comENV 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 http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz && \RUN wget http://archive.apache.org/dist/tomcat/tomcat-8/v${VERSION}/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/localtimeENV PATH $PATH:/usr/local/tomcat/binWORKDIR /usr/local/tomcatEXPOSE 8080CMD ["catalina.sh", "run"][root@localhost first_stage]# docker build -t  tomcat:v1 -f Dockerfile-tomcat .[root@localhost first_stage]# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEtomcat              v1                  118b74bae95f        52 seconds ago      427MBphp                 v1                  402fe17abd8f        55 minutes ago      522MBnginx               v1                  d25e10f6dc2f        About an hour ago   369MBcentos              7                   9f38484d220f        4 months ago        202MB[root@localhost first_stage]#


5. 快速搭建LNMP网站平台

快速部署LNMP网站平台1、自定义网络 docker network create lnmp2、创建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 3、创建PHP容器 docker run -d --name lnmp_php --net lnmp --mount src=wwwroot,dst=/wwwroot php:v1 4、创建Nginx容器 docker run -d --name lnmp_nginx --net lnmp -p 88:80 \ --mount type=bind,src=$(pwd)/nginx.conf,dst=/usr/local/nginx/conf/nginx.conf --mount src=wwwroot,dst=/wwwroot nginx:v1 5、以wordpress博客为例 https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz

实战演练:

创建自定义网络[root@localhost ~]# docker network create lnmpe206a2a632cf78430fc6c32d6f50a810c0a8f3ad8ad32287b354cad32de04aac[root@localhost ~]# [root@localhost ~]# docker network lsNETWORK ID          NAME                DRIVER              SCOPE67d8c68783da        bridge              bridge              local2b6c8c029f58        host                host                locale206a2a632cf        lnmp                bridge              localfc002cd520b3        none                null                local[root@localhost ~]# 查看创建的容器[root@localhost ~]# docker ps -aCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES[root@localhost ~]#查看创建的卷:[root@localhost ~]# docker volume lsDRIVER              VOLUME NAME[root@localhost ~]创建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 run -d --name lnmp_nginx --net lnmp -p 88:80 \ --mount type=bind,src=$(pwd)/nginx.conf,dst=/usr/local/nginx/conf/nginx.conf --mount src=wwwroot,dst=/wwwroot nginx:v1  #保证当前目录下有nginx.conf文件 挂载后会自动创建本地卷mysql-vol、wwwroot[root@localhost first_stage]# docker volume lsDRIVER              VOLUME NAMElocal               mysql-vollocal               wwwroot[root@localhost first_stage]# docker ps -a    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                 NAMESe09f16c2e561        nginx:v1            "nginx -g 'daemon of…"   55 seconds ago      Up 54 seconds       0.0.0.0:88->80/tcp    lnmp_nginxcc9ca12735fd        php:v1              "php-fpm"                4 minutes ago       Up 4 minutes        9000/tcp              lnmp_php22217c6c82ce        mysql:5.7           "docker-entrypoint.s…"   5 minutes ago       Up 5 minutes        3306/tcp, 33060/tcp   lnmp_mysql[root@localhost first_stage]#创建静态测试页面:[root@localhost first_stage]# ls /var/lib/docker/volumes/wwwroot/_data/[root@localhost first_stage]#[root@localhost first_stage]# echo "

Hello,World.

">/var/lib/docker/volumes/wwwroot/_data/index.html浏览器访问:http://192.168.16.121:88/ 显示内容为:Hello,World.创建动态测试页面:[root@localhost first_stage]# echo "">/var/lib/docker/volumes/wwwroot/_data/test.php浏览器访问:http://192.168.16.121:88/test.php 显示内容为:Hello,World.部署wordpress博客:[root@localhost first_stage]# wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz[root@localhost first_stage]# rm -rf /var/lib/docker/volumes/wwwroot/_data/*[root@localhost first_stage]# tar xf wordpress-4.9.4-zh_CN.tar.gz [root@localhost first_stage]# mv wordpress/* /var/lib/docker/volumes/wwwroot/_data/浏览器访问:http://192.168.16.121:88/index.php 显示内容为:WordPress部署向导.数据库名:wordpress用户名:root密码:123456数据库主机:lnmp_mysql表前缀:wp_提交手工创建wp-config.php文件/var/lib/docker/volumes/wwwroot/_data/wp-config.php现在安装站点标题:Jacky用户名:admin密码:123456确认密码:勾选"确认使用弱密码"您的电子邮件:admin@123.com安装WordPress


WordPress安装向导如下所示:


到此为止,WordPress博客已搭建成功了。







0