LoginSignup
32
7

More than 3 years have passed since last update.

docker-composeで指定するcommandはDockerfileよりも優先される

Posted at

優先度

docker-composeでは
buildにおいてdockerfileを指定することで、Dockerfileからイメージを生成してコンテナを作成できます。

このとき、このDockerfileでデフォルトで実行されるCMDがあります。

Dockerfile
CMD ["uvicorn", "code.main:app", "--reload", "--host", "0.0.0.0", "--port", "8000"]

このDockerfileがある状態で、docker-compose.ymlのcommandに別のコマンドを書き込んでみます。

docker-compose.yml
version: "3.0"

services:
  fastapi:
    image: "image"
    container_name: "container"
    # ビルド
    build:
      dockerfile: ./docker/fastapi/Dockerfile
      context: .
    restart: always
    tty: true
    ports:
      - "8000:8000"
    volumes:
      - .:/app
    command: /bin/bash -c "sleep 10 && uvicorn code.main:app --reload --reload-dir code --host 0.0.0.0 --port 8000"

このとき、docker-compose.ymlのcommandが優先して実行されます。
そのため、10秒スリープしてからuvicornが実行されます。

Dockerfileはすでにあって、ymlで簡単に動作を変更できることを考えると、自然な動作かなと思いました。

32
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
32
7