Подтвердить что ты не робот

Как связать контейнеры докеров с сборкой?

Я связал контейнер приложения с postgres на run:

docker run --link postgres:postgres someproject/develop

и он работал нормально.

Но я понял, что мне нужно установить некоторые вещи в базу данных с помощью команды django до run. Поэтому мне нужна ссылка build.

Как я могу это сделать?

docker build -h не имеет опции --link.

4b9b3361

Ответ 1

Я получил ответ от вкладчика докеров Брайана Гоффа:

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 и немедленно выйдет и удалит себя. Запускает приложение для рельсов.

Подумайте о процессе сборки, таком как компиляция приложения. Вы не помещаете данные в базу данных как часть фазы компиляции.

Ответ 2

Вы не можете этого сделать. Вы можете либо создать дочерний образ postgres, либо обновить базу данных каждый раз, когда вы запустите контейнер.

Ответ 3

Правда, но docker build принимает параметр --network.

Контейнеры необходимых условий можно разместить в названной/настраиваемой сети, например:

docker network create whatever
docker run --network whatever --name postgres [etc.] someproject/develop

Затем создайте эту сеть:

docker build --network whatever [etc.]

Хорошо работает.

Ответ 4

У меня была аналогичная проблема. Я хотел ускорить создание изображений с помощью 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