在过去的三天内,我一直在尝试连接由两个单独的docker-compose文件生成的两个docker容器。
我尝试了很多方法,但似乎都行不通。当前,添加网络以撰写文件后,添加网络的服务无法启动。我的目标是从另一个容器访问端点。
端点API撰写文件:
version: "3.1"
networks:
test:
services:
mariadb:
image: mariadb:10.1
container_name: list-rest-api-mariadb
working_dir: /application
volumes:
- .:/application
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=list-api
- MYSQL_USER=list-api
- MYSQL_PASSWORD=root
ports:
- "8003:3306"
webserver:
image: nginx:stable
container_name: list-rest-api-webserver
working_dir: /application
volumes:
- .:/application
- ./docker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
ports:
- "8005:80"
networks:
- test
php-fpm:
build: docker/php-fpm
container_name: list-rest-api-php-fpm
working_dir: /application
volumes:
- .:/application
- ./docker/php-fpm/php-ini-overrides.ini:/etc/php/7.2/fpm/conf.d/99-overrides.ini
使用者撰写文件:
version: "3.1"
networks:
test:
services:
consumer-mariadb:
image: mariadb:10.1
container_name: consumer-service-mariadb
working_dir: /consumer
volumes:
- .:/consumer
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=consumer
- MYSQL_USER=consumer
- MYSQL_PASSWORD=root
ports:
- "8006:3306"
consumer-webserver:
image: nginx:stable
container_name: consumer-service-webserver
working_dir: /consumer
volumes:
- .:/consumer
- ./docker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
ports:
- "8011:80"
networks:
- test
consumer-php-fpm:
build: docker/php-fpm
container_name: consumer-service-php-fpm
working_dir: /consumer
volumes:
- .:/consumer
- ./docker/php-fpm/php-ini-overrides.ini:/etc/php/7.2/fpm/conf.d/99-overrides.ini
有人可以告诉我从使用者内部访问API容器的最佳方法吗?我对此一无所知。
最佳答案
你两个
networks:
test:
不要指代同一个网络,但它们是独立的,并且彼此之间不交谈。
您可以做的是拥有一个既可以组成文件又可以通话和共享的外部现有网络。您可以使用
docker network create
做到这一点,然后在撰写文件中使用networks:
default:
external:
name: some-external-network-here
关于docker - Docker compose 3.1,两个docker-compose.yml之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57543904/