一,dockerfile指令

二,Build镜像命令

build  -t  #镜像名称
         -f   #指定Dockerfile文件位置

示例:
docker build .
docker build -t  kk/myapp .
docker build -t kk/myapp -f /path/Dockerfile /path

三,构建PHP镜像

$ mkdir php
$ cd php/
$ vi Dockerfile
FROM  centos:7             #基础镜像

MAINTAINER cong

RUN yum install -y  gcc gcc-c++ make gd-devel libxml2-devel libcurl-devel libjpeg-devel libpng-devel openssl-devel

ADD php-5.6.31.tar.gz /tmp/   #ADD具有下载(url链接) 解压(压缩包) 拷贝功能,本地到镜像中的目录

#如果这里些了user abc  下面的所有操作都会在这个命令下操作

RUN cd /tmp/php-5.6.31 && \
        ./configure --prefix=/usr/local/php \
        --with-config-file-path=/usr/local/php/etc \
        --with-mysql --with-mysqli \
        --with-openssl --with-zlib  --with-curl --with-gd \
        --with-jpeg-dir --with-png-dir --with-iconv \
        --enable-fpm --enable-zip --enable-mbstring  && \
        make -j 4 && \
        make install && \
        cp /usr/local/php/etc/php-fpm.conf.default  /usr/local/php/etc/php-fpm.conf &&\
        sed -i "s/127.0.0.1/0.0.0.0"   /usr/local/php/etc/php-fpm.conf && \
        sed -i "21a \daemonizer=no" /usr/local/php/etc/php-fpm.conf

COPY  php.ini  /usr/local/php/etc

RUN rm -rf /tmp/php-5.6.31* && yum clean all

WORKDIR /usr/local/php   

EXPOSE 9000   #声明容器服务端口
CMD ["./sbin/php-fpm","-c","/usr/local/php/etc/php-fpm.conf"]    
#docker run -itd image-name  abc(这边加了abc会覆盖,变成CMD["abc"])

#ENTRYPOINT 等于上面CMD,但是不会覆盖CMD。另外覆盖CMD需要在run后面用--entrypoint 来覆盖
$ ls     
php-5.6.31.tar.gz  Dockerfile  php.ini
$ docker build -t php:v1 .  #进到在这个目录下执行构建一个镜像
或
$ docker image build -t nginx:v1 -f Dockerfile .   # -f 默认就是Dockerfile,最后 . 是上下文

四,构建nginx镜像

$ mkdir nginx
$ cd nginx/
$ vi Dockerfile
FROM  centos:7             #基础镜像

MAINTAINER cong

RUN yum install -y  gcc gcc-c++ make openssl-devel pcre-devel

ADD nginx-1.12.1.tar.gz /tmp  #ADD具有下载(url链接) 解压(压缩包) 拷贝功能,本地到镜像中的目录

#如果这里些了user abc  下面的所有操作都会在这个命令下操作

RUN cd /tmp/nginx-1.12.1 && \
        ./configure --prefix=/usr/local/nginx  && \
        make -j 4 && \
        make install 

RUN rm -rf /tmp/nginx-1.12.1* && yum clean all

COPY  nginx.conf  /usr/local/nginx/conf     #将当前目录的nginx.conf文件拷贝到容器的/usr/local/nginx/conf目录

WORKDIR /usr/local/nginx  

EXPOSE 80   #声明容器服务端口
CMD ["./sbin/nginx","-g","daemon off;"]

$ ls 
nginx-1.12.1.tar.gz Dockerfile nginx.conf

$ docker image build -t nginx:v1 .

五,构建php环境

1.自定义网络
docker network create lnmp

2.创建PHP容器
docker run -itd \
--name lnmp_php \
--net lnmp \
--mount type=bind,src=/app/wwwroot/,dst=/usr/local/nginx/html \
php:v1

3.创建Nginx容器
docker run -itd \
--name lnmp_nginx \
--net lnmp \
-p 888:80 \
--mount type=bind,src=/app/wwwroot/,dst=/usr/local/nginx/html \
nginx:v1

4.创建Mysql容器
docker run -itd \
--name lnmp_mysql \
--net lnmp \
-p 3306:3306 \
--mount src=mysql-vol,dst=/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql --character-set-server=utf8

六,构建tomcat环境

$ mkdir tomcat
$ cd tomcat/
$ vi Dockerfile
FROM  centos:7             #基础镜像

MAINTAINER cong

ADD jdk-8u45-linux-x64.tar.gz /usr/local  #ADD具有下载(url链接) 解压(压缩包) 拷贝功能,本地到镜像中的目录
ENV JAVA_HOME /usr/local/jdk1.8.0_45

ADD apache-tomcat-8.0.46.tar.gz /usr/local  
COPY server.xml /usr/local/apache-tomcat-8.0.46/conf

RUN rm -f /usr/local/*.tar.gz

WORKDIR /usr/local/apache-tomcat-8.0.46
EXPOSE 8080   #声明容器服务端口
ENTRYPOINT ["./bin/catalina.sh","run"]

$ ls 
jdk-8u45-linux-x64.tar.gz Dockerfile server.xml
#构建镜像 
$ docker image build -t tomcat:v1 .

#创建容器,/app/webapps目录需要先创建
docker run -itd \
--name=tomcat \
-p 8080:8080 \
--mount type=bind,src=/app/webapps/,dst=/usr/local/apache-tomcat-8.0.46/webapps \
tomcat:v1

#创建默认工程名目录并放代码
$ ls /app/webapps/
$ mkdir /app/webapps/ROOT
vi /app/webapps/ROOT/index.html

.

posted on 2020-01-13 13:41  聪神carry  阅读(190)  评论(0)    收藏  举报