📝

VS Codeで「Dev Containers: Open Folder in Container」を実行したときの処理順序【初心者向け】

2025/01/20に公開

応用が全くききません!
こんにちは、
ワニかず@40歳 出戻りエンジニアです。

docker-compose.ymlがある場合に、
VS Codeで「Dev Containers: Open Folder in Container」
を実行したときの流れをまとめました。

Dockerfile単体での
VSCode+Docker+Django
の環境構築の流れは何となく理解したのですが、

docker-compose.ymlがある場合に、
どのようにファイルが読み込まれるのか
混乱してしまったので、整理してまとめました。

処理順序

フローにしました。

VSCodeのフォルダ構成

devcontainer.json

devcontainer.json
{
    "name": "calendar_project",
    "dockerComposeFile": "../docker/docker-compose.yml",
    "service": "web",
    "workspaceFolder": "/app",
    "customizations": {
        "vscode": {
            "extensions": [
                "ms-azuretools.vscode-docker",
                "ms-python.python",
                "ms-python.vscode-pylance"
            ]
        }
    }
}

docker-compose.yml

docker-compose.yml
services:
  web:
    build:
      context: ..
      dockerfile: docker/Dockerfile
    ports:
      - "8001:8000"
    volumes:
      - ../backend:/app
    command: python manage.py runserver 0.0.0.0:8000
    depends_on:
      - db
  db:
    image: postgres:13
    environment:
      - POSTGRES_DB=calendar_db
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
    volumes:
      - postgres_data:/var/lib/postgresql/data/
      
volumes:
  postgres_data:

Dockerfile

Dockerfile
FROM python:3.9

ENV PYTHONUNBUFFERED 1
ENV PYTHONDONTWRITEBYTECODE 1

RUN mkdir /static
RUN mkdir /app
WORKDIR /app
COPY backend/requirements.txt /app/
RUN pip install -r requirements.txt

処理の流れ

  1. VS Codeで「Dev Containers: Open Folder in Container」を実行
  2. 「devcontainer.json」が読み込まれる。
  3. 「"dockerComposeFile": "../docker/docker-compose.yml",」の設定があるので「docker-compose.yml」が読み込まれる。
  4. 「docker-compose.yml」の中に「dockerfile: docker/Dockerfile」の設定があるので、「Dockerfile」が読み込まれる。

Discussion