在本教程中,我们将配置一个nginx容器来服务静态内容,以及一个php容器来服务php文件。
客户端: 20.10.12 服务器。20.10.12
作为工作的一部分,你可能已经在同一个容器中配置了Nginx和PHP。但是,最近我们有一个要求,要将Nginx和PHP-fpm配置在不同的容器中。
运行下面的命令来提取图像
docker image pull nginx:latest
docker image pull php:fpm
确认镜像已被正确拉出。
docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
php fpm 6c2e0d7fb356 11 days ago 450MB
nginx latest a99a39d070bf 11 days ago 142MB
docker network create --driver bridge my-net
要列出已创建的桥接网络
docker network ls
My first PHP page
<?php
echo "Hello World!";
?>
首先,我们将创建一个nginx容器。
docker container run -d --name nginx -p 8080:80 -v index.php:/usr/share/nginx/html --network my-net nginx:latest
-d = 分离容器的shell会话,并在后台运行该容器
-p = 端口映射,用于将容器的端口映射到主机系统上。这里,容器的8080端口被映射到主机系统的80端口。
-v = 绑定挂载一个卷
- network = 将一个容器连接到一个网络,这使得容器之间可以进行基于名称的通信。
同样地,让我们创建一个PHP-fpm容器。
docker container run -d --name php -p 9000:9000 -v index.php:/var/www/html --network my-net php:fpm
选项和以前一样。
docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2193060a2768 php:fpm "docker-php-entrypoi…" 2 minutes ago Up 2 minutes 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp php
288e76fa12a3 nginx:latest "/docker-entrypoint.…" 5 minutes ago Up 5 minutes 0.0.0.0:8080->80/tcp, :::8080->80/tcp nginx
运行下面的命令来初始化容器的bash会话。
docker container exec -it nginx bash
一旦这个命令被执行,你将得到一个容器的shell提示。现在我们需要安装一个编辑器(例如:vim、nano)来编辑Nginx的配置文件。
root@288e76fa12a3:/# apt update &> /dev/null ; apt install vim -y &> /dev/null
导航到配置文件并添加以下配置。
cat /etc/nginx/conf.d/default.conf
server {
listen 80;
listen [::]:80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.php index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html;
}
location ~ .php$ {
root /var/www/html;
fastcgi_pass php:9000;
fastcgi_index index.php;
set $filename "index.php";
if ( $fastcgi_script_name ~ "^/+(.*)#34; ) {
set $filename $1;
}
fastcgi_param SCRIPT_FILENAME $filename;
include fastcgi_params;
}
}
root@288e76fa12a3:/# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
由于配置中没有错误,我们可以进一步进行。在对配置文件进行任何修改后,一定要检查是否有语法错误。
由于我们对配置进行了修改,nginx服务必须被重新启动。一个简单的方法是退出容器,重新启动容器。
root@288e76fa12a3:/# exit
这个命令将从容器中退出会话并在我们的本地syscal系统中建立一个shell会话。现在,重新启动容器。
sreehari@sh:~$ docker container restart nginx
检查容器是否已经重新启动,没有任何错误。
docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2193060a2768 php:fpm "docker-php-entrypoi…" 40 minutes ago Up 40 minutes 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp php
288e76fa12a3 nginx:latest "/docker-entrypoint.…" 40 minutes ago Up 10 seconds 0.0.0.0:8080->80/tcp, :::8080->80/tcp nginx
http://localhost:8080
在这篇文章中,我们学习了如何在不同的容器上设置Nginx和PHP,并允许它们进行通信,以便它们能够处理请求。
页面更新:2024-04-15
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号