TL; DR:我如何更改以下内容docker-compose.yml以允许一个容器通过自定义(非标准)端口使用另一个容器的服务?
我有一个非常常见的设置:Web应用程序的容器(Padrino [Ruby]),Postgres,Redis和排队框架(Sidekiq).Web应用程序带有自定义Dockerfile,其余服务来自标准图像(Postgres,Redis),或者从Web应用程序(Sidekiq)安装数据.他们通过以下方式联系在一起docker-compose.yml:
version: '2'
services:
web:
build: .
command: 'bundle exec puma -C config/puma.rb'
volumes:
- .:/myapp
ports:
- "9000:3000"
depends_on:
- postgres
- redis
sidekiq:
build: .
command: 'bundle exec sidekiq -C config/sidekiq.yml -r ./config/boot.rb'
volumes:
- .:/myapp
depends_on:
- postgres
- redis
postgres:
image: postgres:9.5
environment:
POSTGRES_USER: my-postgres-user
POSTGRES_PASSWORD: my-postgres-pass
ports:
- '9001:5432'
volumes:
- 'postgres:/var/lib/postgresql/data'
redis:
image: redis
ports:
- '9002:6379'
volumes:
- 'redis:/var/lib/redis/data'
volumes:
redis:
postgres:
Run Code Online (Sandbox Code Playgroud)
这里要注意的一个关键点是我在非标准端口(9000-9002)上公开容器服务.
如果我开始使用设置 …