RytRyu-0817
@RytRyu-0817

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

バインドマウント時にDockerコンテナにvenvのフォルダが同期されるのをやめたい

Dockerを勉強中の者です.
Dockerが開発でどう使われるのかを考えている状況です,
少し疑問が湧いたので,知見のある方ご教授いただきたいです.

状態

ホスト側では,venvを使ってpipの環境を分離して行っています.
同期するフォルダは,以下で「フォルダ構成」として記載しています.

以下の流れで,初回ビルドと再ビルドを行っています.

  • 初回ビルド時
    • Dockerfileより,djangoのフォルダ構成(project, app)をコンテナに作成
    • docker cpでホスト側にフォルダ構成をコピーする
    • バインドマウントでコンテナを起動
  • それ以降で再ビルドする時(ライブラリの追加時)
    • ホスト側でvenv内でpipでライブラリをインストールし,requirements.txtに出力
    • 現コンテナを停止,削除
    • imageを再ビルド
    • バインドマウントでコンテナを起動

解決したいこと

タイトルの通りです.

上記のような流れでビルドを行っていますが,ホスト側でvenvを使用しているため,バインドマウント時にvenvのフォルダがコンテナ内でも同期されてしまいます.
正直venv以外にもDockerfileや.dockerignoreも同期したくないです.

特に支障はないといえばないのですが,このようにバインドマウント時に一部のフォルダの同期をやめるみたいな裏技的なことはできるのでしょうか?

可能であれば,ご教授いただきたいです.
よろしくお願いします.

フォルダ構成

/django_project
├── .dockerignore
├── Dockerfile
├── requirements.txt
├── manage.py
├── venv/
├── app/
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── migrations/
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
└── project/
    ├── __init__.py
    ├── asgi.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

Dockerfile

FROM python:3.10-slim

# 作業ディレクトリ定義
WORKDIR /django_project

RUN apt-get update && apt-get install -y \
    gcc \
    libpq-dev \
    && rm -rf /var/lib/apt/lists/*

# まずrequirements.txtを定義    
COPY requirements.txt /django_project/

# パッケージインストール
RUN pip install --upgrade pip && pip install -r requirements.txt

# フォルダ構成の初期化(project, app)
RUN django-admin startproject project . && \
    python manage.py startapp app

CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

自分で試したこと

  • バインドマウント時に,一部のフォルダやファイルを除外できるような記載は調べてもなかった
  • dockerignoreに記載するのかと思ったが,ビルド時に無視するフォルダやファイルなので関係ない思った
0

No Answers yet.

Your answer might help someone💌