Dockerfile构建容器镜像,搭建LNMP网站平台
1. Dockerfile常用指令
Docker build
典型用法:docker build -t ImageName:TagName dir .
选项:
(1)-t 指定镜像名
(2)ImageName 给镜像起的名称
(3)TagName 给镜像的Tag名
(4)Dir Dockerfile所在目录
(5)-f 指定Dockerfile的名字,默认就是Dockerfile,如果改成其它名字需要-f指定一下
(6).代表当前目录即上下文,构建镜像时所需文件从哪里找。
例子:
cd /root/dockerfile/nginx docker build -t nginx:v1 -f Dockerfile .
2. 构建PHP网站平台镜像
Lnmp=Linux+Nginx+MySQL+PHP
【特别注意】通常将一个服务的所有相关信息都放在同一个目录下,如上图。
虚机IP地址
2.1 构建nginx镜像配置
[root@docker ~]# vim Dockerfile/nginx/Dockerfile
FROM centos:7
MAINTAINER www.starcto.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;"]
[root@Docker nginx]# docker image build -t nginx:v1 -f Dockerfile . # 构建命令
2.2 构建PHP镜像
[root@docker ~]# vim Dockerfile/php/Dockerfile
FROM centos:7
MAINTAINER www.starcto.com
RUN yum install -y gcc gcc-c++ make gd-devel libxml2-devel libcurl-devel libjpegdevel 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"]
[root@docker php]# docker image build -t php:v1 -f Dockerfile . # 构建命令
2.3 构建容器与网络
(1)自定义网络
[root@docker /]# docker network create lnmp
(2)创建PHP容器
[root@docker /]# docker run -itd \
--name lnmp_php \
--net lnmp \
--mount type=bind,src=/app/wwwroot/,dst=/usr/local/nginx/html \
php:v1
(3)创建Nginx容器
[root@docker /]# docker run -itd \
--name lnmp_nginx \
--net lnmp \
-p 80:80
--mount type=bind,src=/app/wwwroot/,dst=/usr/local/nginx/html \
nginx:v1
(4)创建MySQL容器
[root@docker /]# docker run -itd \
--name lnmp_mysql \
--net lnmp \
-p 3306:3306
--mount src=mysql-vol,dst=/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-e MYSQL_DATABASE=wordpress \
mysql:5.7 --character-set-server=utf8
[root@docker ~]# docker volume inspect mysql-vol # 查看volume卷
(5)容器网络测试
#正确进入容器方式
[root@docker ~]# docker exec -it lnmp_nginx sh
【注】nginx容器、PHP容器、MySQL容器之间的通信是通过内部DNS解析完成的。
(6)部署wordpress
wget https://cn.wordpress.org/wordpress-4.7.4-zh_CN.tar.gz
tar zxf wordpress-4.7.4-zh_CN.tar.gz -C /app/wwwroot
附件LNMP文件下载地址:
链接:https://pan.baidu.com/s/1vD1KLYLpqKS6plquYaBUmA
提取码:y38d
作者:UStarGao
链接:https://www.starcto.com/docker/110.html
来源:STARCTO
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
UCloud云平台推荐
随便看看
- 2021-07-22MySQL主从同步延迟-大事务缺少索引
- 2021-08-08UCloud ULB负载均衡https解决方案
- 2024-01-12Linux Screen命令提升运维效率
- 2021-07-21MySQL Binlog日志解析方法
- 2022-09-15MySQL自增ID相关设置