【发布时间】:2020-01-09 18:10:11
【问题描述】:
我想为同一网络下的多个项目设置本地 DOCKER 环境。我想拥有将创建 Nginx 代理和 PHP 容器的主要 docker-compose 配置文件。还有许多带有自己的 Nginx 的子 docker-compose 文件。我希望所有子 Nginx 容器都监听主 PHP 容器。但由于某种原因,子 Nginx 容器失败并出现错误 host not found in upstream "app-php" in /etc/nginx/vhost.d/site.cong25
主docker-compose:
version: '3.5'
services:
app-nginx_proxy:
build: ./nginx-proxy
image: app/nginx-proxy:latest
container_name: app-nginx_proxy
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
networks:
- appnetwork
app-php:
image: app/php:latest
container_name: app-php
build:
context: ./php-fpm
dockerfile: Dockerfile
expose:
- 9000
volumes:
- app_volume:/var/www/
networks:
- appnetwork
volumes:
app_volume:
driver: local
driver_opts:
type: bind
device: "$PWD/../services"
o: bind
networks:
appnetwork:
driver: bridge
和孩子docker-compose:
version: '3.5'
services:
app-admin-nginx:
build: ./nginx
image: app-admin/nginx:latest
container_name: app-admin-nginx
volumes:
- app_admin_volume:/var/www/app-admin
networks:
appnetwork:
aliases:
- app-admin.v2.local
environment:
- VIRTUAL_HOST=app-admin.v2.local
volumes:
app_admin_volume:
driver: local
driver_opts:
type: bind
device: "$PWD/../services/app-admin"
o: bind
networks:
appnetwork:
external: true
另外,site.conf:
server {
listen 80;
server_name app-admin.v2.local;
root /var/www/app-admin/web;
index index.html index.htm index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_log /var/log/nginx/abboom_admin_error.log;
access_log /var/log/nginx/abboom_admin_access.log;
error_page 404 /index.php;
sendfile off;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app-php:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
}
location ~ /\.ht {
deny all;
}
}
如果我将所有配置移动到单个 docker-compose 文件中,一切正常,但使用单个文件并不灵活,因为我想为开发人员添加仅运行他们需要的应用程序而不是我们的所有应用程序的能力有
【问题讨论】:
-
您是否尝试过使用以下语法:docker-compose -f path/to/first/yml/file -f path/to/second/yml/file up {container*}
-
也许您也可以尝试使用
links属性:docs.docker.com/compose/compose-file/#links(例如:在您的 app-admin-nginx 服务中添加链接:-app-web)
标签: php docker nginx docker-compose