一、Dockerfile用法
docker 的build 命令
Usage: docker image build [OPTIONS] PATH | URL | - Options: -t, --tag list # 镜像名称 -f, --file string # 指定Dockerfile文件位置 示例: docker build . docker build -t shykes/myapp . docker build -t shykes/myapp -f /path/Dockerfile /path
二、构建一个PHP的站点
2.1、构建nginx镜像
所有Dockerfile配置文件如下:
备注:必须有配置文件,否则无法构建成功。
示例:
FROM centos:7 MAINTAINER www.aliangedu.com RUN yum install -y gcc gcc-c++ make openssl-devel pcre-devel ADD nginx-1.12.1.tar.gz /tmp RUN cd /tmp/nginx-1.12.1 && \ ./configure --prefix=/usr/local/nginx && \ make -j 2 && \ make install RUN rm -rf /tmp/nginx-1.12.1* && yum clean all COPY nginx.conf /usr/local/nginx/conf WORKDIR /usr/local/nginx EXPOSE 80 CMD ["./sbin/nginx", "-g", "daemon off;"] ---- 执行构建 cd nginx/ docker build -t nginx:v1 -f Dockerfile .
2.2、构建php的镜像
FROM centos:7 MAINTAINER www.aliangedu.com 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/ 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 \daemonize = 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"] ----- 执行构建命令 cd /root/php/ docker build -t php:v1 -f Dockerfile .
显示结果:
2.3、根据构建好的镜像创建容器
1 、自定义网络 docker network create lnmp 2 2 、创建 PHP 容器 docker run -itd \ --name lnmp_php \ --net lnmp \ --mount type=bind,src=/app/wwwroot/,dst=/usr/local/nginx/html \ php:v1 3 3 、创建 Nginx 容器 mkdir -p /app/wwwroot/ docker run -itd \ --name lnmp_nginx \ -p 888:80 \ --net lnmp \ --mount type=bind,src=/app/wwwroot/,dst=/usr/local/nginx/html \ nginx:v1 4 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的镜像
FROM centos:7 MAINTAINER www.aliangedu.com ADD jdk-8u45-linux-x64.tar.gz /usr/local 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"] ------------- cd /root/tomcat/ docker build -t tomcat:v1 -f Dockerfile . ------------ 开启容器: mkdir -p /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 cd /app/webapps/ mkdir ROOT cd ROOT echo "hello world" >> index.html