【发布时间】:2021-05-15 22:00:42
【问题描述】:
我有两个 Rails 6 应用程序,我试图部署在具有不同端口 8080 和 8081 的 aws ec2 实例中,但是当我尝试运行 docker-compose up -d 时,它会成功启动一个 rails 应用程序,如果我尝试为第二个应用程序运行docker-compose up -d,它会关闭第一个应用程序并在特定端口上启动另一个应用程序
以下是我的两个应用程序的 docker 配置。
应用 1
version: "3.4"
services:
app:
image: "dockerhub_repo/a_api:${TAG}"
# build:
# context: .
# dockerfile: Dockerfile
container_name: a_api_container
depends_on:
- database
- redis
- sidekiq
ports:
- "8080:8080"
volumes:
- .:/app
env_file: .env
environment:
RAILS_ENV: staging
database:
image: postgres:12.1
container_name: a_database_container
restart: always
volumes:
- db_data:/var/lib/postgresql/data
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
sidekiq:
image: "dockerhub_repo/a_api:${STAG}"
container_name: a_sidekiq_container
environment:
RAILS_ENV: staging
env_file: .env
depends_on:
- redis
volumes:
- ".:/app"
redis:
image: redis:4.0-alpine
container_name: a_redis_container
volumes:
- "redis:/data"
volumes:
redis:
db_data:
应用 2
version: "3.4"
services:
app:
image: "dockerhub_repo/b_api:${PPTAG}"
build:
context: .
dockerfile: Dockerfile
container_name: b_api
depends_on:
- database
- redis
ports:
- "8081:8081"
volumes:
- .:/app
env_file: .env
environment:
RAILS_ENV: development
database:
image: postgres:12.1
container_name: pp_database
restart: always
volumes:
- db_data:/var/lib/postgresql/data
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
redis:
image: redis:4.0-alpine
container_name: pp_redis
volumes:
db_data:
此配置在本地机器上运行良好。它在不同端口上的本地启动两个应用程序,但在 aws ec2 上存在一些问题。我不确定配置有什么问题吗?
【问题讨论】:
-
是目录下的两个
docker-compose.yml文件同名吗;/app-a/docker或/app-b/docker之类的?这可能会使 Compose 感到困惑。 -
@DavidMaze 是的,第一个在 app1/backend 中,第二个在 app2/backend 中。我重命名了它,它就像魅力一样。非常感谢。但我没有得到类似的东西文件夹名称如何导致问题?
标签: ruby-on-rails docker amazon-ec2 docker-compose