[英]How to forbid recreating docker containers with docker-compose up
[英]How to link docker containers on build?
我在run
將我的app容器鏈接到postgres:
docker run --link postgres:postgres someproject/develop
它工作得很好。
但我意識到我需要在run
之前使用django命令將一些東西安裝到數據庫中。 所以我需要在build
鏈接。
我怎樣才能做到這一點?
--link
docker build -h
沒有--link
選項。
我得到了碼頭工作者Brian Goff的回答:
docker run -d --name mydb postgres
docker run --rm --link mydb:db myrailsapp rake db:migrate
docker run -d --name myapp --link mydb:db myrailsapp
這將打開postgres。 啟動一個執行db遷移的容器,然后立即退出並自行刪除。 啟動rails應用程序。
想一想構建過程,比如編譯應用程序。 作為編譯階段的一部分,您不會將數據植入數據庫。
沒錯,但是--network
docker build
確實接受了--network
選項。
您可以將先決條件容器放在命名/自定義網絡上,例如:
docker network create whatever
docker run --network whatever --name postgres [etc.] someproject/develop
然后在該網絡上構建:
docker build --network whatever [etc.]
效果很好。
你不可以做這個。 您可以構建postgres的子映像,也可以在每次啟動容器時更新數據庫。
我有一個類似的問題。 我想在apt-cacher
的幫助下加速圖像構建。 它運行在自己的容器中,不知何故,我建立的其他圖像必須與之通信。
解決方案是在所有接口上發布apt-cacher
端口。 這包括例如docker0
,它可用於在圖像構建期間產生的中間容器。
示例Dockerfile
:
FROM debian:8
RUN ping -c 2 172.17.0.1
這就是它的構建方式:
$ docker build - <dock
Sending build context to Docker daemon 2.048 kB
Step 1 : FROM debian:8
---> 47af6ca8a14a
Step 2 : RUN ping -c 2 172.17.0.1
---> Running in 4f56ce7c7b63
PING 172.17.0.1 (172.17.0.1): 56 data bytes
64 bytes from 172.17.0.1: icmp_seq=0 ttl=64 time=0.117 ms
64 bytes from 172.17.0.1: icmp_seq=1 ttl=64 time=0.130 ms
--- 172.17.0.1 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.117/0.123/0.130/0.000 ms
---> 5c73a36a0a6a
Removing intermediate container 4f56ce7c7b63
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.