Ваш единственный вариант - добавить скрипт запуска в Dockerfile
или запустить его как часть ваших docker run ...
команд. Обычно мы не используем задачи «Docker», так как я нахожу их ... неприятными (также почему я обычно просто возвращаюсь к выполнению задачи «Сценарий» и напрямую вызываю docker run
в этом сценарий задачи)
В любом случае, вам нужно, чтобы ваш контейнер Docker выполнял скрипт, который бы:
- Запуск Postgres (например,
sudo systemctl start postgresql
)
- Выполните ваши тесты.
Ваш Dockerfile
должен будет установить Postgresql и выполнить небольшую работу по настройке, которую я себе представляю (например, создать соответствующих пользователей и базы данных с соответствующим владельцем). Поскольку мы все хорошие граждане, мы не забываем никогда не запускать ваши контейнеры как root, верно?
Примечание. Вы всегда можете взломать два контейнера для общения друг с другом, не используя docker-compose
. Это немного менее удобно, но вы можете сделать что-то вроде:
docker run --detach --cidfile=db_cidfile --name ci_db postgresql_image
...
docker run --link ci_db testing_image
Убедитесь, что у вас EXPOSE
правильные порты на образе postgresql для контейнера testing_image
.
РЕДАКТИРОВАТЬ: я смотрю больше на мой конкретный случай - мы просто устанавливаем Postgresql на базовый хост CentOS, а не используем образ по умолчанию postgresql (используя yum install http://yum.postgresql.org/..../pgdg-centos...rpm
, а затем просто устанавливаем пакеты postgresql-server
и postgresql-contrib
оттуда ). В нашем Dockerfile
тоже есть CMD [ "/usr/pgsql-ver/bin/postgres", "-D", "/var/lib/pgsql/ver/data"]
. Мы не делаем ничего необычного с док-контейнером. ПРИМЕЧАНИЕ : мы вообще не используем это в производстве, это строго для локального тестирования и тестирования CI.