docker:微服务(nginx+php-fpm搭建)

发布时间 2024-01-01 17:28:14作者: 卷叶小树

1.制作php-fpm镜像

1.1 宿主机php-fpm安装

# yum源安装
yum -y install php-fpm  
# 修改配置文件
vim /etc/php-fpm.d/www.conf
修改 line 38   listen = 0.0.0.0:9000           #监听所有地址
修改 line 64   ;listen.allowed_clients = 127.0.0.1  #允许其它地址能访问
# 启动服务
systemctl start php-fpm
# 查看9000端口
ss -antpul|grep 9000

 1.2 制作php-fpm镜像

# 新建目录
mkdir /root/php
cd   /root/php
cp /etc/php-fpm.d/www.conf ./
vim info.php # 内容php测试文件
vim Dockerfile
# Dockerfile内容如下
FROM image:yum
RUN yum -y install php-fpm   && yum clean all
RUN mkdir -p /run/php-fpm
COPY www.conf /etc/php-fpm.d/www.conf
WORKDIR /usr/local/nginx/html
COPY info.php info.php
EXPOSE 9000
CMD ["/usr/sbin/php-fpm", "--nodaemonize"]

# 执行生成镜像
docker build -t image:php-fpm

2.制作nginx镜像

1.1 宿主机nginx安装

# 下载安装包
wget nginx-1.17.6.tar.gz
# 安装nginx编辑等环境所需要的包
yum -y install gcc make pcre-devel openssl-devel
# 解压 安装 编译
useradd nginx  
tar -xf nginx-1.17.6.tar.gz
cd nginx-1.17.6/ 
./configure --prefix=/usr/local/nginx --user=nginx  --group=nginx --with-http_ssl_module # 指定安装目录、用户、组,支持加密功能
make && make install
# 测试案例
echo nginx is running! > /usr/local/nginx/html/info.html
cp info.php /usr/local/nginx/html/

1.2 制作nginx镜像

# 将编译好的nginx目录进行打包压缩
cd /usr/local
tar -czf nginx.tar.gz nginx
# 新建目录
mkdir /root/nginx
cd /root/nginx
mv /usr/local/nginx.tar.gz ./
vim Dockerfile
# Dockerfile内容如下
FROM image:yum
RUN yum -y install pcre openssl && useradd nginx && yum clean all
ADD nginx.tar.gz /usr/local/
WORKDIR /usr/local/nginx/html
EXPOSE 80
CMD ["/usr/local/nginx/sbin/nginx", "-g",  "daemon off;"]

# 执行生成镜像
docker build -t image:nginx

3.配置并启动容器

# 容器共享目录
cd /var/webroot #网页文件
cp /usr/local/nginx/html/info.* ./
vim /var/webconfig/nginx.conf
# 内容如下
 location ~ \.php$ {
    root  html;
    fastcgi_pass  127.0.0.1:9000;   
    fastcgi_index index.php;
    include fastcgi.conf;
 }
# 启动nginx容器,-p 容器端口和宿主机端口绑定, -v实现容器目录与主机目录共享
docker run -itd -p 80:80 -name nginx -v /var/webconf/nginx.conf:/usr/local/nginx/conf/nginx.conf -v /var/webroot:/usr/local/nginx/html image:nginx

# 启动php-fpm容器, --network= 共享nginx网络
docker run -itd --network=container:nginx -v /var/webroot:/usr/local/nginx/html image:php-fpm

4.测试

curl 192.168.4.21/info.php