Docker入门与应用实战之Dockerfile
admin
2023-04-01 20:03:17
0


1.Dockerfile格式

Docker入门与应用实战之Dockerfile


2. Dockerfile指令

Docker入门与应用实战之Dockerfile


3. Build镜像

Docker入门与应用实战之Dockerfile


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-nginx
FROM centos:7
MAINTAINER www.dengaosky.com
RUN 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/localtime

ENV PATH $PATH:/usr/local/nginx/sbin
COPY nginx.conf /usr/local/nginx/conf/nginx.conf
WORKDIR /usr/local/nginx
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
[root@localhost first_stage]# docker build -t  nginx:v1 -f Dockerfile-nginx .
[root@localhost first_stage]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               v1                  d25e10f6dc2f        3 minutes ago       369MB
centos              7                   9f38484d220f        4 months ago        202MB
[root@localhost first_stage]#

构建PHP基础镜像:

[root@localhost first_stage]# cat Dockerfile-php 
FROM centos:7
MAINTAINER www.dengaosky.com
RUN 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

ENV PATH $PATH:/usr/local/php/sbin
COPY php.ini /usr/local/php/etc/
COPY php-fpm.conf /usr/local/php/etc/
WORKDIR /usr/local/php
EXPOSE 9000
CMD ["php-fpm"]
[root@localhost first_stage]# docker build -t  php:v1 -f Dockerfile-php .
[root@localhost first_stage]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
php                 v1                  402fe17abd8f        4 seconds ago       522MB
nginx               v1                  d25e10f6dc2f        15 minutes ago      369MB
centos              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:7
MAINTAINER www.dengaosky.com

ENV VERSION=8.0.46

RUN 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/localtime

ENV PATH $PATH:/usr/local/tomcat/bin

WORKDIR /usr/local/tomcat

EXPOSE 8080
CMD ["catalina.sh", "run"]
[root@localhost first_stage]# docker build -t  tomcat:v1 -f Dockerfile-tomcat .
[root@localhost first_stage]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
tomcat              v1                  118b74bae95f        52 seconds ago      427MB
php                 v1                  402fe17abd8f        55 minutes ago      522MB
nginx               v1                  d25e10f6dc2f        About an hour ago   369MB
centos              7                   9f38484d220f        4 months ago        202MB
[root@localhost first_stage]#


5. 快速搭建LNMP网站平台

Docker入门与应用实战之Dockerfile

快速部署LNMP网站平台
1、自定义网络 
docker network create lnmp
2、创建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 lnmp
e206a2a632cf78430fc6c32d6f50a810c0a8f3ad8ad32287b354cad32de04aac
[root@localhost ~]# 
[root@localhost ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
67d8c68783da        bridge              bridge              local
2b6c8c029f58        host                host                local
e206a2a632cf        lnmp                bridge              local
fc002cd520b3        none                null                local
[root@localhost ~]# 

查看创建的容器
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@localhost ~]#

查看创建的卷:
[root@localhost ~]# docker volume ls
DRIVER              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 ls
DRIVER              VOLUME NAME
local               mysql-vol
local               wwwroot
[root@localhost first_stage]# docker ps -a    
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                 NAMES
e09f16c2e561        nginx:v1            "nginx -g 'daemon of…"   55 seconds ago      Up 54 seconds       0.0.0.0:88->80/tcp    lnmp_nginx
cc9ca12735fd        php:v1              "php-fpm"                4 minutes ago       Up 4 minutes        9000/tcp              lnmp_php
22217c6c82ce        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安装向导如下所示:

Docker入门与应用实战之Dockerfile

Docker入门与应用实战之Dockerfile

Docker入门与应用实战之Dockerfile

Docker入门与应用实战之Dockerfile

Docker入门与应用实战之Dockerfile

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




Docker入门与应用实战之Dockerfile




相关内容

热门资讯

特朗普下令不打了,美国的“余粮... 可以说戛然而止,快得让很多人都无法适应。前两周,每一天美国都要打击伊朗一通。就在7月24日白宫会议前...
穆杰塔巴最新表态:支持黎真主党 △伊朗最高领袖穆杰塔巴·哈梅内伊(资料图)当地时间7月26日晚,伊朗最高领袖穆杰塔巴·哈梅内伊对黎巴...
美军瘫痪一艘驶向伊朗的油轮,特... 美国总统特朗普虽下令暂停打击伊朗,但美军仍在执行对霍尔木兹海峡的封锁任务。针对美军瘫痪一艘驶向伊朗油...
“小牌大耍”的底气到底是哪里来... 澎湃首席评论员 李平这两天,“艺人李权哲乘高铁占座事件”在网上引发热议,该艺人参加的活动主办方曾发布...
越南籍船舶南海遇险沉没,中方已... 据凤凰卫视报道,一艘越南船舶7月24日夜间在越南庆和以东220海里附近遇险沉没,船上共62名越南籍人...
李权哲占座、蒙面、装死:娱乐圈... 你买了一张高铁一等座的票,找到自己的位置,18A。有人坐着。你拿出手机看了眼购票记录——没错,18A...
杭州景区咖啡店闯入1条幼蛇,仅... 夏天气温高、湿度大,蛇类活动进入高峰期,千万别被“小蛇无害”的刻板印象骗了!有些幼蛇看着迷你可爱,实...
AI开源公开信签署企业增至50... IT之家 7 月 26 日消息,英伟达、微软、IBM、Meta 等 25 家美国科技企业本周(7 月...
南阳快手短视频代运营企业的服务... 在短视频平台快速发展的背景下,企业通过快手等渠道进行内容运营已成为常见的市场动作。对于希望借助短视频...
普通人该如何跟上科技发展的步伐 这个被称作科技的词汇, 听起来既有宏大之感, 又颇为遥远, 好似仅仅归属于在实验室里专心致志钻研的科...