[英]Why docker-compose fail and docker run success with postgresql?
我正試圖用我的Mac啟動一個postgreSQL docker容器; 我使用OSX 10.11.16 El Capitan和Docker Toolbox 19.03.01。
如果我運行:
docker run --name my_postgres -v my_dbdata:/var/lib/postgresql/data -p 54320:5432 postgres:11
一切都完成了,我得到了:
my_postgres | 2019-09-17 04:51:48.908 UTC [41]日志:數據庫系統已准備好接受連接
但是如果我使用像這樣的.yml文件:
docker-compose.yml:
version: "3"
services:
db:
image: "postgres:11"
container_name: "my_postgres"
ports:
- "54320:5432"
volumes:
- my_dbdata:/var/lib/postgresql/data
volumes:
my_dbdata:
並運行
docker-compose up
我得到:
my_postgres | /usr/local/bin/docker-entrypoint.sh:忽略/docker-entrypoint-initdb.d/* my_postgres | my_postgres | 2019-09-17 04:51:49.009 UTC [41]日志:收到快速關閉請求my_postgres | 2019-09-17 04:51:49.011 UTC [41]日志:中止任何活動的交易my_postgres | ...等待服務器關閉。...2019-09-17 04:51:49.087 UTC [41]日志:后台工作程序“邏輯復制啟動器”(PID 48)退出,退出代碼為1 my_postgres | 2019-09-17 04:51:49.091 UTC [43]日志:關閉my_postgres | 2019-09-17 04:51:49.145 UTC [41]日志:數據庫系統已關閉
為什么與docker-compose相同的想法失敗?
非常感謝
如果您嘗試訪問主機上的現有卷,則需要使用以下external
關鍵字指定該卷是在Compose文件external
創建的:
version: "3.7"
services:
db:
image: postgres
volumes:
- data:/var/lib/postgresql/data
volumes:
data:
external: true
我從Compose文件參考https://docs.docker.com/compose/compose-file/中獲取了示例。
還要在兩次運行之間仔細檢查外部卷的內容,以查看是否被覆蓋。
還請仔細檢查您的引號,您無需在引號中添加圖片名稱,但我認為這不是問題。
嘗試以下對我有用的
version: '3.1'
services:
db:
image: postgres
restart: always
environment:
POSTGRES_PASSWORD: mypassword
volumes:
- ./postgres-data:/var/lib/postgresql/data
ports:
- 5432:5432
然后在使用上一個命令后使用docker-compose up
獲取日志使用docker-compose logs -f
在這兩種情況下,名為my_dbdata
卷不同。 my_dbdata
docker run
創建一個名為my_dbdata
的卷,而my_dbdata
docker-compose
默認情況下創建一個名為<dir>_my_dbdata
運行docker volume
列出卷:
docker volume ls |grep my_dbdata
我懷疑docker-compose
創建的卷存在問題,因此postgres
無法正確啟動。 my_postgres
容器中的數據庫初始化僅完成一次。
嘗試刪除docker-compose
創建的容器和卷:
docker rm my_postgres
docker volume rm <dir>_my_dbdata
希望能幫助到你
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.