docker-compose - 通过fastcgi连接多个容器,nginx和php
问题描述
我有三个容器,mysql、phpfpm 和 nginx。
当我尝试运行 localhost:8080 时,出现此错误:
[error] 11#11: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.27.0.1, server: _,.
request: "GET / HTTP/1.1", upstream: "fastcgi://172.27.0.3:9000", host: "localhost:8080"
有人可以帮我吗?我想念什么?
这是我的docker-compose.yaml
:
version: '3'
services:
php:
build: php
container_name: phpfpm
expose:
- '9002'
- '9000'
depends_on:
- db
volumes:
- /srv/www/mito/app:/var/www/html
- ./dockerlive/logs:/var/log
command: /bin/bash -c "rm -rf /var/run/php && mkdir /var/run/php && rm -rf /run/php && mkdir /run/php && /usr/sbin/php-fpm7.4 -F -R"
nginx:
build: nginx
container_name: webserver
ports:
- '8080:80'
depends_on:
- php
- db
volumes:
- /srv/www/mito/app:/var/www/html
- ./dockerlive/logs:/var/log/nginx
environment:
- NGINX_HOST=localhost
- NGINX_PORT=80
command: /bin/bash -c "nginx -g 'daemon off;'"
db:
build: database
container_name: mysql
ports:
- "3306:3306"
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: 1
MYSQL_DATABASE: mito
和 nginx 配置:
server {
listen 80;
listen [::]:80;
server_name _;
root /var/www/html;
index index.html index.php;
#error_log /var/log/nginx/mito.localhost-error.log;
#access_log /var/log/nginx/mito.localhost-acces.log;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
#fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_pass phpfpm:9000;
}
}
解决方案
我在某个地方发现了一个有用的想法,我已经实现了。
我在 nginx 和 php 卷中添加了一个条目:
- php-fpm-socket:/var/run/php
而且我还在主卷部分中定义了它,没有任何参数。
推荐阅读
- angular - Angular spy RxJS 可观察
- python - 如何在查询图像和检索到的图像之间找到召回率和精度?
- javascript - 当我单击菜单以外的其他位置时如何关闭自定义菜单
- debugging - 如何允许在 Intellij Idea 中进行地理定位并应用 chrome 标志“不安全地对待不安全的来源作为安全”
- javascript - 如何为我的机器人制定禁令、踢出和清除命令?
- python - 如何在 Python 中存储 Neo4J 查询结果的返回记录?
- c++ - 不完整的类型是不允许的 QApplication
- vb.net - SettingsPropertyValue.UsingDefaultValue 不起作用?
- javascript - Discord服务器自动删除微博?
- python - AttributeError:“NumpyArrayIterator”对象没有属性“ndim”