宝宝巴士系列又发车喽~各位观众老爷,可爱的乘客们。今天的宝宝巴士是用Dockerfile 自动构建nginx+php环境,构建完后只需将php代码导入即可。
首先在宿主机创建一个专门放dockerfile的目录
[root@localhost 03_lnmp_dkf]$ pwd
/app/docker/dockerfile/03_lnmp_dkf
[root@localhost 03_lnmp_dkf]$ tree
.
├── Dockerfile
├── entrypoint.sh
├── info.php
└── php.test.cn.conf
0 directories, 4 files
编写Dockerfile(不想动手可以复制粘贴)
[root@localhost 03_lnmp_dkf]$ cat Dockerfile
FROM centos:latest
LABEL author="babybus"
ENV WEB_USER=nginx
ADD entrypoint.sh /
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo \
&& minorver=8.5.2111 \
&& sed -e "s|^mirrorlist=|#mirrorlist=|g" \
-e "s|^#baseurl=http://mirror.centos.org/\$contentdir/\$releasever|baseurl=https://mirrors.aliyun.com/centos-vault/${minorver}|g" \
-i.bak \
/etc/yum.repos.d/CentOS-*.repo \
&& yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm \
&& sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel* \
&& sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel* \
&& yum clean all \
&& yum makecache \
&& yum install -y nginx php-fpm php-mysqlnd php-gd php-mbstring php-xml php-opcache php-json php-curl \
&& sed -i "s#apache#${WEB_USER}#g" /etc/php-fpm.d/www.conf \
&& sed -i "s#/run/php-fpm/www.sock#127.0.0.1:9000#g" /etc/php-fpm.d/www.conf
#&& echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/info.php
ADD info.php /app/code/blog/
ADD php.test.cn.conf /etc/nginx/conf.d/
RUN chown -R nginx.nginx /app/code/blog/ \
&& chmod -R 755 /app/code/blog/
RUN mkdir -p /run/php-fpm/ \
&& chown nginx:nginx /run/php-fpm/
EXPOSE 80 9000
CMD ["/entrypoint.sh"]
容器入口脚本
[root@localhost 03_lnmp_dkf]$ cat entrypoint.sh
#!/bin/bash
php-fpm
nginx -g "daemon off;"
nginx的子配置文件
[root@localhost 03_lnmp_dkf]$ cat php.test.cn.conf
server {
listen 80;
server_name php.test.cn;
root /app/code/blog;
error_log /var/log/nginx/blog-error.log notice;
access_log /var/log/nginx/blog-access.log main;
location / {
index index.php;
}
location ~* \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_buffering on;
fastcgi_buffers 64 64k;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
php测试
[root@localhost 03_lnmp_dkf]$ cat info.php
<?php
phpinfo();
?>
部署运行
[root@localhost 03_lnmp_dkf]$ docker build -t babybus:driver .
[+] Building 0.0s (11/11) FINISHED #等待构建
[root@localhost 03_lnmp_dkf]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
babybus driver 52b84d858b8b About a minute ago 429MB
[root@localhost 03_lnmp_dkf]$ docker run -d -p 8090:80 --name "baby" babybus:driver
e05ab6d41445c960649188ae2948fc2b04b6a8a018adba0377517eb2cebae345
[root@localhost 03_lnmp_dkf]$ docker ps -a #检查是否 0.0.0.0:8089->80/tcp
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1be10895d449 babybus:driver "/entrypoint.sh" 52 minutes ago Up 52 minutes 9000/tcp, 0.0.0.0:8089->80/tcp, [::]:8089->80/tcp test_php
#别忘了/etc/hosts做dns解析
[root@localhost 03_lnmp_dkf]$ vim /etc/hosts
127.0.0.1 php.test.cn
:wq
此时宿主机浏览器访问php.test.cn:8089/info.php出现下图即成功
此时可以将php代码导入容器/app/code/blog/中即可生效(以下以wordpress为例)
感谢各位乘客与观众老爷们浏览到了末尾,司机是学习者分享学习经验,很普通,但是希望可以帮到一些概率极小的可能在学习这方面的同学。观众老爷们记得点点赞!
还请多多指正!