[英]Rails and Nginx on different Docker containers (how share data between containers)
[英]Running different docker containers on same host/different port
我有一個由多個Rails項目組成的應用程序,我正在嘗試對其進行泊塢化,每個應用程序都從不同的Rails端口啟動:
這是我的docker-compose.yml文件:
version: '2'
services:
db:
image: postgres:9.6
container_name: acme_db
hostname: db.myapp.dev
hostname: db.ach
ports:
- "5432:5432"
volumes:
- myapp_pgdata:/var/lib/postgresql/data/pgdata
environment:
- PGDATA=/var/lib/postgresql/data/pgdata
- VIRTUAL_HOST=db.myapp.dev
networks:
- generic
myapp:
image: acme/myapp
container_name: acme_myapp
hostname: app.myapp.dev
command: rails s -p 1665 -b '0.0.0.0'
volumes:
- ./myapp:/usr/src/app
- $SSH_AUTH_SOCK:/tmp/ssh_auth_sock
ports:
- "1665:1665"
depends_on:
- db
environment:
- SSH_AUTH_SOCK=/tmp/ssh_auth_sock
- RAILS_ENV=development
- VIRTUAL_HOST=myapp.dev
networks:
- generic
admin:
image: acme/admin
container_name: acme_admin
hostname: admin2.myapp.dev
command: rails s -p 3002 -b '0.0.0.0'
volumes:
- ./admin2:/usr/src/app
- $SSH_AUTH_SOCK:/tmp/ssh_auth_sock
ports:
- "3002:3002"
depends_on:
- myapp
environment:
- SSH_AUTH_SOCK=/tmp/ssh_auth_sock
- RAILS_ENV=development
- VIRTUAL_HOST=admin2.myapp.dev
networks:
- generic
website:
image: acme/website
container_name: acme_website
hostname: web.myapp.dev
command: rails s -p 3001 -b '0.0.0.0'
volumes:
- ./website:/usr/src/app
- $SSH_AUTH_SOCK:/tmp/ssh_auth_sock
ports:
- "3001:3001"
environment:
- SSH_AUTH_SOCK=/tmp/ssh_auth_sock
- RAILS_ENV=development
- VIRTUAL_HOST=myapp.dev
networks:
- generic
volumes:
myapp_pgdata:
external: true
networks:
generic:
external: true
運行每個應用程序都可以正常工作,但是當應用程序需要在它們之間進行通信時,例如網站需要將http請求轉發到主應用程序時,我遇到了一個問題;當它這樣做時,它會嘗試解決此uri: http://app.myapp.dev:1665/register
,並且解析的IP是127.0.0.1,而不是myapp
docker容器IP。
我該如何處理這種情況? 我應該為每個容器使用完全不同的主機名嗎? 理想情況下,我想避免DNS解析,因此Rails嘗試命中app.myapp.dev:1665
而不是解析app.myapp.dev
然后解析127.0.0.1:1665
順便說一句,我正在使用jwilder/nginx-proxy
從筆記本電腦解析容器主機名。
有什么想法嗎 ?
您的設置允許您的容器通過docker-compose設置的“網絡”通過名稱相互解析。
因此, website
應該可以通過http://myapp:1665/register
來website
主應用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.