[英]Docker-compose - How to populate a container data to another container?
[英]docker-compose for a pure data container and web server, postgresql
我正在使用docker-compose.yml文件為我的django nginx postgresql和一個純數據容器構建3個docker容器。
這是我的docker-compose.yml
data:
# pure data container
image: busybox
volumes:
- /etc/postgresql
- /var/log/postgresql:/var/log/postgresql
- /var/lib/postgresql
- /var/log/nginx:/var/log/nginx
- /var/log/supervisor:/var/log/supervisor
db:
image: postgres
volumes_from:
- data
web:
build: .
ports:
- "80:80"
- "443:443"
links:
- db
volumes_from:
- data
$docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cc26b3a72a02 myweb_web:latest "supervisord -n" 6 minutes ago Up 6 minutes 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp myweb_web_1
14763a9f68d1 postgres:latest "/docker-entrypoint. 6 minutes ago Up 6 minutes 5432/tcp myweb_db_1
37598892038b busybox:latest "/bin/sh" 6 minutes ago Exited (0) 6 minutes ago myweb_data_1
我擔心如何備份和恢復存儲在純數據容器(myweb_data_1)中的postgresql數據。 我使用“docker-compose build && docker-compose up”命令重建docker鏡像並重新啟動容器,如果我更新代碼,但不確定這是否正確或最佳方式。
我沒有postgresql的經驗,但從docker的角度來看,這種方法看起來非常好。 您的數據將位於數據容器中。 它不會受docker-compose build && docker-compose up
。 Raman Gupta在他的文章中對這個主題進行了很好的介紹。
在那里他還強調你需要適用於僅數據容器的正確思維方式。 對您而言,這意味着您可以擁有“備份容器” 。 使用postgres
圖像並從中運行一個新容器,該容器使用--volumes-from myweb_data_1
。 現在,在容器中,您可以使用postgresql中的適當工具並訪問數據容器中的數據庫。
同樣,postgresql可能會有所不同,但對於mysql來說,這就是方法,它完全正常,並且是我理解的最佳實踐。 順便說一句,mysql是一個服務器。 因此,您將啟動一個新容器並將其鏈接( --link
)與myweb_db_1
容器相關聯。 不確定postgresql的行為方式。
你可以試試這個:
docker run --volumes-from myweb_data_1 -v $(pwd):/ backup ubuntu tar cvf /backup/backup.tar
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.