コマンドはdocker-compose.ymlとDockerfileのどちらで定義するほうがいい?
こちらにDocker-ComposeでDjangoとPostgreSQLを動かす例があります。
この例ではdocker-compose.ymlでコマンドを定義していますが、サービス定義でbuild
を指定している場合にはDockerfileのCMD
でもコマンドを定義することができます。
docker-composeのcommand
DockerfileのCMD
docker-compose.yml
version: '2'
services:
db:
image: postgres
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
Dockerfile
FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
# CMD <-ここでもコマンドを定義できる
このような場合にはdocker-compose.ymlのcommand
とDockerfileのCMD
のどちらで定義したほうがいいのでしょうか?
それぞれのメリット/デメリットがあれば教えてください。