php - Symfony docker 配置中的两个服务
问题描述
我的目标是 docker 中的两个服务,它们有一个主机(或单独的端口,应该是更好的方法)和机会相互调用。目前,我在 symfony 上使用 twi 服务进行了简单配置,但在 nginx 上只有一个使用虚拟主机。第二项服务不可用。应该怎么样?
这就是我所拥有的
码头工人-compose.yml
version: '2'
services:
php:
build: ./docker/php/
environment:
TIMEZONE: Europe/Kiev
volumes:
- ./docker/php/php.ini:/usr/local/etc/php/php.ini:ro
- ./app:/var/www/app
working_dir: /var/www/app
ports:
- 9002:9000
sub_app:
build: ./docker/php/
environment:
TIMEZONE: Europe/Kiev
volumes:
- ./docker/php/php.ini:/usr/local/etc/php/php.ini:ro
- ./sub_app:/var/www/sub_app
working_dir: /var/www/sub_app
ports:
- 9001:9000
webserver:
image: nginx:1.11
depends_on:
- php
volumes_from:
- php
volumes:
- ./docker/nginx/app.conf:/etc/nginx/conf.d/default.conf:ro
ports:
- 8080:80
composer:
image: composer:1.4
volumes_from:
- php
working_dir: /var/www/app
码头工人/nginx/app.conf
upstream php-upstream {
server php:9000;
}
server {
root /var/www/app/public;
listen 80;
server_tokens off;
location / {
try_files $uri @rewriteapp;
}
location @rewriteapp {
rewrite ^(.*)$ /index.php/$1 last;
}
location ~ ^/index\.php(/|$) {
fastcgi_pass php-upstream;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS off;
}
}
和 docker/php/Dockerfile
FROM php:7.3-fpm
# Install recommended extensions for Symfony
RUN apt-get update && apt-get install -y \
libicu-dev \
&& docker-php-ext-install \
intl \
opcache \
&& docker-php-ext-enable \
intl \
opcache
# Permission fix
RUN usermod -u 1000 www-data
以及我所拥有的
http://127.0.0.1:8080/
-> 来自服务的 Symfony 欢迎页面php
,来自目录app
http://127.0.0.1:9001/
-> ERR_EMPTY_RESPONSE
http://127.0.0.1:9002/
-> ERR_EMPTY_RESPONSE
码头工人撰写ps
码头工人撰写ps
Name Command State Ports
--------------------------------------------------------------------------------------------------------------
docker-test_composer_1_de8307ec4af2 /docker-entrypoint.sh composer Exit 0
docker-test_php_1_2118a4e10353 docker-php-entrypoint php-fpm Up 0.0.0.0:9002->9000/tcp
docker-test_sub_app_1_3c473ac40c77 docker-php-entrypoint php-fpm Up 0.0.0.0:9001->9000/tcp
docker-test_webserver_1_b53daccf2f3a nginx -g daemon off; Up 443/tcp, 0.0.0.0:8080->80/tcp
当我检查谁许可端口时在本地电脑中
lsof -i :8080 -> empty
lsof -i :9001 -> empty
lsof -i :9002 -> empty
解决方案
您没有指定您尝试从哪里访问 service1 。所以,我会回答这两种情况:
- 来自主机,
- 从码头内部
假设您在 Windows 主机上安装了 docker。在 docker-compose 中为每个服务提供一个端口映射。例如。对于一个名为 service1 你做的服务
service1:
ports:
-9001:9000
这里 9000 是您要映射的 service1 中的端口。此端口映射到主机窗口的端口 9001。现在您使用 -> 从 Windows 访问 service1localhost:9001
您可以使用 -> 从 docker 内的另一个服务访问 service1service1:9000
现在,要回答您的问题,您可以执行以下操作
service1:
ports:
-9001:9000
service2:
ports:
-9002:9000
从主机窗口访问 service1 ->localhost:9001
从主机窗口访问 service2 ->localhost:9002
从 docker 内部访问 service1 ->service1:9000
从 docker 内部访问 service2 ->service2:9000
编辑:
试试这个 docker-compose 文件:
version: '2'
services:
service1:
build: ./docker/php/
environment:
TIMEZONE: Europe/Kiev
volumes:
- ./docker/php/php.ini:/usr/local/etc/php/php.ini:ro
- ./service1:/var/www/service1
working_dir: /var/www/service1
ports:
-8080:80
service2:
build: ./docker/php/
environment:
TIMEZONE: Europe/Kiev
volumes:
- ./docker/php/php.ini:/usr/local/etc/php/php.ini:ro
- ./service2:/var/www/service2
working_dir: /var/www/service2
ports:
-8081:80
webserver:
image: nginx:1.11
depends_on:
- service1
- service2
volumes_from:
- service1
- service2
volumes:
- ./docker/nginx/service1.conf:/etc/nginx/sites-enabled/service1.conf:ro
- ./docker/nginx/service2.conf:/etc/nginx/sites-enabled/service2.conf:ro
composer_service1:
image: composer:1.4
volumes_from:
- service1
working_dir: /var/www/service1
composer_service2:
image: composer:1.4
volumes_from:
- service2
working_dir: /var/www/service2
networks:
service1:
service2:
推荐阅读
- regex - 正则表达式忽略以特定模式结尾的字符串
- javascript - 在 Service Worker 中使用 performance.now() 获取 API 响应时间
- python - MySQL BIGINT 插入不一致?
- python - Model A 和 Model B 的关系是基于 django 中 Model A 信息过滤器中关于 Model B 的信息显示
- visual-studio - 为什么 Cyclonedds 不能为 vs2013 构建?
- spring - 如何创建自定义 SAML 身份验证流程
- python - 无法打开图像文件 Azure Blob 存储
- python - 访问 discord.py 中的字典
- flutter - 带有图标的 Flutter 数字文本字段
- python - 根据 pandas 中前一小时的数据添加缺失日期的数据