Tôi đang sử dụng docker-compose và tôi muốn sử dụng các Dockerfiles khác nhau cho các bước xây dựng các dịch vụ khác nhau. Các docs dường như đề nghị để đặt Dockerfiles khác nhau trong các thư mục khác nhau, nhưng tôi muốn tất cả chúng được trong cùng một (và có lẽ phân biệt bằng cách sử dụng quy ước sau đây: Dockerfile.postgres, Dockerfile.main ...). Điều này có thể không?docker-compose: sử dụng nhiều Dockerfiles cho nhiều dịch vụ
Edit: Kịch bản tôi có chứa Docker-soạn tập tin này:
main:
build: .
volumes:
- .:/code
environment:
- DEBUG=true
postgresdb:
extends:
file: docker-compose.yml
service: main
build: utils/sql/
ports:
- "5432"
environment:
- DEBUG=true
nơi postgresdb
's Dockerfile là:
FROM postgres
# http://www.slideshare.net/tarkasteve/developerweek-2015-docker-tutorial
ADD make-db.sh /docker-entrypoint-initdb.d/
và chính là:
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/
Điều này hoạt động ngay bây giờ, nhưng tôi muốn mở rộng kết thúc của Dockerfile postgresdb
's bằng cách gọi một kịch bản Python tạo bảng trong cơ sở dữ liệu theo mô hình được xây dựng dựa trên SQL Alchemy (kịch bản Python sẽ được gọi là python manage.py create_tables
). Tôi muốn thêm nó vào Dockerfile của db, nhưng do sự cô lập của các container tôi không thể sử dụng SQL Alchemy ở đó vì hình ảnh đó dựa trên hình ảnh postgres
thay vì Python, và nó không chứa gói sqlalchemy
.. .
Tôi có thể làm gì? Tôi đã cố gắng sử dụng dịch vụ main
trong postgresdb
, nhưng tiếc là nó không mang theo python và các gói của nó, vì vậy tôi vẫn không thể viết một Dockerfile duy nhất để tạo cơ sở dữ liệu Postgres (thông qua shell script) cũng như các bảng của nó (thông qua một kịch bản Python).
Hey James - cảm ơn bạn! Tôi đã chỉnh sửa câu hỏi và thêm lý do tôi muốn làm điều này; bạn có biết cách mở rộng dịch vụ để giải quyết vấn đề này không? Cảm ơn một lần nữa! – aralar