![](/img/trans.png)
[英]docker-compose can't find services or containers in Docker for Mac
[英]Docker container in docker-compose can't find other containers by hostname
我正在將docker-compose文件從v1升級到v3,並且將容器鏈接在一起時遇到問題。
在docker-compose.yml之前是這樣的:
database:
working_dir: /mnt
volumes:
- .:/mnt
links:
- postgresql_db
ports:
- '3000:3000'
build: ./database
entrypoint: python database/server.py
postgresql_db:
build: ./database
ports:
- '5432:5432'
test_database:
working_dir: /mnt
volumes:
- .:/mnt
links:
- test_postgresql_db
ports:
- '5053:5053'
build: ./database/test
test_postgresql_db:
image: postgres:latest
ports:
- '5432:5432'
但鏈接已被棄用。 現在容器應共享一個網絡(默認情況下應該這樣做),並且能夠使用主機名找到彼此(請參閱: 此處 )。
所以我將文件修改為:
version: '3'
networks:
dbnet:
driver: bridge
volumes:
postgresql_data: {}
postgresql_test_data: {}
services:
database:
build: database
environment:
APPLICATION_DB_CONTAINER: db
APPLICATION_POSTGRES_HOST: db
working_dir: /mnt
volumes:
- .:/mnt
networks:
- dbnet
ports:
- '3000:3000'
command: python database/server.py
db:
image: postgres:latest
volumes:
- postgresql_data:/var/lib/postgresql/data
networks:
- dbnet
depends_on:
- database
test_database:
build: database/test
environment:
APPLICATION_DB_CONTAINER: testdb
working_dir: /mnt
volumes:
- .:/mnt
command: python -m pytest --cov=database --cov-report term --cov-report html:htmlcov database/test/
testdb:
image: postgres:latest
volumes:
- postgresql_test_data:/var/lib/postgresql/data
我遇到的問題是數據庫容器無法通過主機名找到數據庫容器,我得到(我的軟件嘗試連接每秒10秒然后停止):
錯誤:數據庫postgresql:// postgres:@db:5432 / postgres NOT found(10次嘗試)
我檢查並且數據庫容器已啟動,如果我使用其IP地址然后它可以工作,但使用主機名卻沒有。
如何鏈接數據庫和數據庫容器並確保每次都找到它?
信息:我在MacOs上運行docker Version 18.06.0-ce-mac70。
謝謝 !
編輯:試圖在db的compose文件中添加它,但沒有改變問題。
港口:'5432:5432'
sqlalchemy.exc.OperationalError:(psycopg2.OperationalError)無法將主機名“db”轉換為地址:名稱或服務未知數據庫_1 (關於此錯誤的背景: http : //sqlalche.me/e/e3q8 )
我從sqlalchemy收到此錯誤,指示數據庫容器不知道db(或db-1)是什么,文件/ etc / hosts不包含任何其他容器的提及
正如@sachav在評論中指出的那樣,我顛倒了depends_on。
在數據庫服務中,
db:
depends_on:
- database
...
強制db服務在數據庫之前啟動,從而阻止數據庫知道主機db存在!
拿出來並加入
database:
depends_on:
- db
...
訣竅:)
謝謝@sachav,我現在就自己去面對。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.