laravel - 码头工人。Laravel 容器之间的通信
问题描述
我有一个项目,我正在尝试使用微服务方法开发。我在两个独立的微服务上准备了 API 并完成了它们的测试。当我从容器 A 向容器 B 发送请求时,我收到错误cURL error 7: Could not connect to localhost port 8100: Connection denied。经过我的研究,我找不到解决方案。请求架构:我正在尝试从 127.0.0.1:8000 向运行在 127.0.0.1:8100 的 api 地址发出请求。
我应该怎么做才能解决这个问题?我的问题可能是错误的,所以我提前道歉。
谢谢
我的 Compose File First 容器
# For more information: https://laravel.com/docs/sail
version: '3'
services:
laravel.test:
build:
context: ./docker/8.0
dockerfile: Dockerfile
args:
WWWGROUP: '${WWWGROUP}'
image: sail-8.0/app
container_name: MP-Main-Service-Laravel
extra_hosts:
- 'host.docker.internal:host-gateway'
ports:
- 8000:8000
environment:
WWWUSER: '${WWWUSER}'
LARAVEL_SAIL: 2
XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
volumes:
- '.:/var/www/html'
networks:
- sail
depends_on:
- mysql
- redis
mysql:
image: 'mysql:8.0'
container_name: MP-Main-Service-MySql
ports:
- '${FORWARD_DB_PORT:-3306}:3306'
environment:
MYSQL_ROOT_USER: '${DB_USERNAME}'
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
MYSQL_DATABASE: '${DB_DATABASE}'
MYSQL_USER: '${DB_USERNAME}'
MYSQL_PASSWORD: '${DB_PASSWORD}'
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
volumes:
- "/var/lib/mysql"
networks:
- sail
phpmyadmin:
image: 'phpmyadmin:latest'
container_name: MP-Main-Service-PhpMyAdmin
ports:
- 8081:80
environment:
PMA_HOST: mysql
MYSQL_ROOT_USER: '${DB_USERNAME}'
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
MYSQL_DATABASE: '${DB_DATABASE}'
depends_on:
- mysql
networks:
- sail
redis:
image: 'redis:alpine'
container_name: MP-Main-Service-Redis
ports:
- '${FORWARD_REDIS_PORT:-6379}:6379'
volumes:
- 'sailredis:/data'
networks:
- sail
healthcheck:
test: ["CMD", "redis-cli", "ping"]
retries: 3
timeout: 5s
networks:
sail:
driver: bridge
volumes:
sailmysql:
driver: local
sailredis:
driver: local
我的 Compose 文件第二个容器
# For more information: https://laravel.com/docs/sail
version: '3'
services:
laravel.test:
build:
context: ./docker/8.0
dockerfile: Dockerfile
args:
WWWGROUP: '${WWWGROUP}'
image: sail-8.0/app
container_name: MP-Communication-Service-Laravel
extra_hosts:
- 'host.docker.internal:host-gateway'
ports:
- 8100:8000
environment:
WWWUSER: '${WWWUSER}'
LARAVEL_SAIL: 1
XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
volumes:
- '.:/var/www/html'
networks:
- sail
depends_on:
- mysql
- redis
mysql:
image: 'mysql:8.0'
container_name: MP-Communication-Service-MySql
ports:
- '${FORWARD_DB_PORT:-33061}:33061'
environment:
MYSQL_ROOT_USER: '${DB_USERNAME}'
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
MYSQL_DATABASE: '${DB_DATABASE}'
MYSQL_USER: '${DB_USERNAME}'
MYSQL_PASSWORD: '${DB_PASSWORD}'
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
volumes:
- "/var/lib/mysql"
networks:
- sail
phpmyadmin:
image: 'phpmyadmin:latest'
container_name: MP-Communication-Service-PhpMyAdmin
ports:
- 8082:80
environment:
PMA_HOST: mysql
MYSQL_ROOT_USER: '${DB_USERNAME}'
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
MYSQL_DATABASE: '${DB_DATABASE}'
depends_on:
- mysql
networks:
- sail
redis:
image: 'redis:alpine'
container_name: MP-Communication-Service-Redis
ports:
- '${FORWARD_REDIS_PORT:-63791}:6379'
volumes:
- 'sailredis:/data'
networks:
- sail
healthcheck:
test: ["CMD", "redis-cli", "ping"]
retries: 3
timeout: 5s
networks:
sail:
driver: bridge
volumes:
sailmysql:
driver: local
sailredis:
driver: local
解决方案
推荐阅读
- sql - 如何删除存储过程/触发器中的所有打印?
- java - 如何设置类数组变量的值?
- python - 使用一个文件运行良好但另一个文件没有被导入的位置访问我的目录中的文件(?)
- javascript - 必须通过单击标题 div 对 Divs 网格进行排序(未使用的表)
- git - 如何通过带有 ip 地址的 url 从带有 sourcetree 的 gitlab 克隆项目
- angularjs - AngularJS 无法在 IE 和 Edge 中执行控制器方法,只是为了单击刷新按钮
- server - 如何使用 rsync 将不断更新的文件夹与服务器上的图像/视频文件同步
- java - 如何通过自定义适配器将项目的 ArrayList 填充到 ListView?
- python - 如何将列表中的每个元素复制不同的指定次数?
- python - Python 3 中的 While 循环使用列表和 if 语句供初学者使用