【发布时间】:2017-08-07 22:39:08
【问题描述】:
这是我的情况。我们正在慢慢地将我们的虚拟机从 Vagrant 迁移到 Docker,但我们大多仍然是 Docker 新手。我们的一些较新系统的开发环境已经迁移到 Docker。我们有运行在较旧的 Vagrant VM 上的测试代码,用于与运行 Django Restful API 应用程序的 Vagrant 通信以运行集成测试。此 Django API 现在位于 Docker 容器中。所以现在我们需要在 vagrant 中运行的测试代码,以便能够向 docker 中运行的 API 发出请求。 docker 容器和 vagrant 在主机(MacOS)上并排运行。我们正在使用 Docker compose 来初始化 docker 容器,主要的 compose yaml 文件如下所示。
services:
django-api:
ports:
- "8080:8080"
build:
context: ..
dockerfile: docker/Dockerfile.bapi
extends:
file: docker-compose-base.yml
service: django-api
depends_on:
- db
volumes:
- ../:/workspace
command: ["tail", "-f", "/dev/null"]
env_file:
- ${HOME}/.pam_environment
environment:
- DATABASE_URL=postgres://postgres:password@db
- PGHOST=db
- PGPORT=5432
- PGUSER=postgres
- PGPASSWORD=password
- CLOUDAMQP_URL=amqp://rabbitmq
db:
ports:
- "5432"
extends:
file: docker-compose-base.yml
service: db
volumes:
- ./docker-entrypoint-initdb.d/init-postgress-db.sh:/docker-entrypoint-initdb.d/init-postgress-db.sh
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
POSTGRES_DB: django-api-dev
我希望在 vagrant 上运行的测试仍然能够与现在在 docker 上运行的 django 应用程序通信,类似于它在 vagrant 中运行时可以与 api 通信的方式。我在 docker compose 文件中尝试了几种不同类型的网络配置,但是网络不是我的强项,我真的只是在黑暗中拍摄。
有没有办法配置我的 docker 容器和/或我的 vagrant,以便他们可以互相交谈?我需要公开我的 docker 容器的 IP 地址,以便我的 vagrant 可以访问它。
我们将不胜感激任何帮助/提示/指导!
【问题讨论】:
标签: django docker vagrant docker-compose