docker-compose: использование нескольких Dockerfiles для нескольких сервисов
Я использую docker-compose и хотел бы использовать разные Dockerfiles для разных этапов сборки сервисов.документы кажется, предлагают разместить разные файлы Docker в разных каталогах, но я бы хотел, чтобы все они были в одном и том же (и, возможно, их можно было различить, используя следующее соглашение: Dockerfile.postgres, Dockerfile.main ...). Это возможно?
Редактировать: Сценарий, который я имею, содержит этот файл docker-compose:
main:
build: .
volumes:
- .:/code
environment:
- DEBUG=true
postgresdb:
extends:
file: docker-compose.yml
service: main
build: utils/sql/
ports:
- "5432"
environment:
- DEBUG=true
гдеpostgresdb
Dockerfile это:
FROM postgres
# http://www.slideshare.net/tarkasteve/developerweek-2015-docker-tutorial
ADD make-db.sh /docker-entrypoint-initdb.d/
и главное это:
FROM python:2.7
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
ADD . /code/
Это работает прямо сейчас, но я хотел бы расширитьpostgresdb
Dockerfile, вызывая скрипт Python, который создает таблицы в базе данных в соответствии с моделями, основанными на SQL Alchemy (скрипт Python будет называться какpython manage.py create_tables
). Я хотел добавить его в Dockerfile БД, но из-за изоляции контейнеров я не могу использовать там SQL Alchemy, потому что этот образ основан наpostgres
изображение вместо Python, и оно не содержитsqlalchemy
пакет ...
Что я могу сделать? Я пытался использоватьmain
служба вpostgresdb
, но, к сожалению, он не переносит python и его пакеты, поэтому я до сих пор не могу написать ни один Dockerfile, который создает базу данных Postgres (через скрипт оболочки), а также ее таблицы (через скрипт Python).