如何链接构builddocker集装箱?
我将我的应用程序容器链接到postgres run
:
docker run --link postgres:postgres someproject/develop
它工作正常。
但是我意识到我需要在run
之前用django命令安装一些东西到数据库。 所以我需要build
链接。
我怎样才能做到这一点?
--link
docker build -h
没有--link
选项。
我从docker贡献者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。 启动进行数据库迁移的容器,立即退出并删除自己。 启动rails应用程序。
考虑编译过程,比如编译应用程序。 作为编译阶段的一部分,不要将数据存入数据库。
你不可以做这个。 你可以build立一个postgres的子图像,或者每次启动容器时更新数据库。
确实,但docker build
不接受 – --network
选项。
您可以将必备容器放在命名/自定义networking上,例如:
docker network create whatever docker run --network whatever --name postgres [etc.] someproject/develop
然后build立在这个networking上:
docker build --network whatever [etc.]
效果很好。
我有一个类似的问题。 我想借助apt-cacher
来加速图像的构build。 它运行在自己的容器中,而我build立的其他图像也不得不与之通信。
解决scheme是在所有接口上发布apt-cacher
端口。 这包括例如docker0
,它可用于在映像构build期间产生的中间容器。
示例Dockerfile
:
FROM debian:8 RUN ping -c 2 172.17.0.1
这是如何build立的:
$ 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
- Cassandra docker – 无法通过JMX连接
- dokku – 从子文件夹运行Rails 4应用程序
- Apache httpcomponent返回java.net.UnknownHostException:名称或服务未知
- 如何使版本控制系统版本与Docker映像版本同步?
- 在Docker容器中用python模块连接到PostgreSQL
- 谷歌应用程序引擎configuration特定的图像/快照/docker?
- Docker Windows容器中的Powershell列表过程生成空白列表
- docker运行映像导致语法错误/ bin / sh
- JMeter – docker – java.net.connectexception