宝宝巴士系列发车喽~Dockerfile一键部署nginx+php环境

宝宝巴士系列又发车喽~各位观众老爷,可爱的乘客们。今天的宝宝巴士是用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为例)

感谢各位乘客与观众老爷们浏览到了末尾,司机是学习者分享学习经验,很普通,但是希望可以帮到一些概率极小的可能在学习这方面的同学。观众老爷们记得点点赞!

还请多多指正!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值