質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

1383閲覧

django開発サーバーがビルドできない。

saito5940

総合スコア63

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2021/02/02 15:55

編集2021/02/03 06:19

Winodows 1p Pro (64bit)
Vagrant 2.2.14
Ubuntu 18.04
Python 3.7.3

Windows上でDnagoを勉強していたのですが、Dockerの勉強も含めてDnagoを勉強するため、
DockerでDjangoの開発環境を構築しています。

docker-compose -f docker-compose.prod.yml up -d --buildを実行すると。DockFileが起動するのですが、
最後のインストール後に以下のエラーが表示されます。

Sending build context to Docker daemon 158.2kB Step 1/11 : FROM python:3.7-alpine ---> b9aa0352c160 Step 2/11 : WORKDIR /usr/src/app ---> Using cache ---> 3148844adc85 Step 3/11 : ENV PYTHONDONTWRITEBYTECODE 1 ---> Using cache ---> e35901e562a7 Step 4/11 : ENV PYTHONUNBUFFERED 1 ---> Using cache ---> 7b51339f93d1 Step 5/11 : RUN apk update && apk add --virtual build-deps gcc python3-dev musl-dev && apk add postgresql-dev && pip install psycopg2 && apk del build-deps ---> Using cache ---> b6dccc7758d5 Step 6/11 : RUN pip install --upgrade pip && pip install pipenv ---> Using cache ---> 7d2ae02b192d Step 7/11 : COPY ./Pipfile /usr/src/app/Pipfile ---> Using cache ---> f4acea8362d0 Step 8/11 : RUN pipenv install --skip-lock --system --dev ---> Running in efff9a042164 Traceback (most recent call last): File "/usr/local/lib/python3.7/site-packages/pipenv/project.py", line 573, in _parse_pipfile return tomlkit.parse(contents) File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/tomlkit/api.py", line 49, in parse return Parser(string).parse() File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/tomlkit/parser.py", line 153, in parse key, value = self._parse_table() File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/tomlkit/parser.py", line 1152, in _parse_table table.raw_append(_key, item) File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/tomlkit/items.py", line 943, in raw_append self._value.append(key, _item) File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/tomlkit/container.py", line 179, in append raise KeyAlreadyPresent(key) tomlkit.exceptions.KeyAlreadyPresent: Key "name " already exists. During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/toml/decoder.py", line 512, in loads multibackslash) File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/toml/decoder.py", line 781, in load_line raise ValueError("Duplicate keys!") ValueError: Duplicate keys! During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/local/bin/pipenv", line 8, in <module> sys.exit(cli()) File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 829, in __call__ return self.main(*args, **kwargs) File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 782, in main rv = self.invoke(ctx) File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 1259, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 1066, in invoke return ctx.invoke(self.callback, **ctx.params) File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 610, in invoke return callback(*args, **kwargs) File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/click/decorators.py", line 73, in new_func return ctx.invoke(f, obj, *args, **kwargs) File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/click/core.py", line 610, in invoke return callback(*args, **kwargs) File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/click/decorators.py", line 21, in new_func return f(get_current_context(), *args, **kwargs) File "/usr/local/lib/python3.7/site-packages/pipenv/cli/command.py", line 253, in install site_packages=state.site_packages File "/usr/local/lib/python3.7/site-packages/pipenv/core.py", line 1938, in do_install pre = project.settings.get("allow_prereleases") File "/usr/local/lib/python3.7/site-packages/pipenv/project.py", line 607, in settings return self.parsed_pipfile.get("pipenv", {}) File "/usr/local/lib/python3.7/site-packages/pipenv/project.py", line 550, in parsed_pipfile parsed = self._parse_pipfile(contents) File "/usr/local/lib/python3.7/site-packages/pipenv/project.py", line 577, in _parse_pipfile return toml.loads(contents) File "/usr/local/lib/python3.7/site-packages/pipenv/vendor/toml/decoder.py", line 514, in loads raise TomlDecodeError(str(err), original, pos) toml.decoder.TomlDecodeError: Duplicate keys! (line 5 column 1 char 75) The command '/bin/sh -c pipenv install --skip-lock --system --dev' returned a non-zero code: 1 ERROR: Service 'django' failed to build

Dockerfie

FROM python:3.7-alpine WORKDIR /usr/src/app ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 RUN apk update \ && apk add --virtual build-deps gcc python3-dev musl-dev \ && apk add postgresql-dev \ && pip install psycopg2 \ && apk del build-deps RUN pip install --upgrade pip \ && pip install pipenv COPY ./Pipfile /usr/src/app/Pipfile RUN pipenv install --skip-lock --system --dev COPY ./entrypoint.prod.sh /usr/src/app/entrypoint.prod.sh COPY . /usr/src/app/ ENTRYPOINT ["/usr/src/app/entrypoint.sh"] ~

pipenv install --skip-lock --system --devを手動で行うと正常に動作します。

再度実行すると以下のエラー出力されます。

ERROR: .FileNotFoundError: [Errno 2] No such file or directory: './docker-compose.prod.yml'

docker-compose.prod.yml'

version: '3.7' services: # サービス名は自由に設定 django: build: context: ./app dockerfile: Dockerfile.prod # サービス起動後に入力されるコマンドを設定 command: gunicorn django_demo.wsgi:application --bind 0.0.0.0:8000 # データを永続化させる場合の設定。`host:container`でパスを記載 volumes: - ./app/:/usr/src/app/ # 開放するポートを指定。`host:container`でポートを記載 ports: - 8000:8000 # 環境変数を指定 env_file: .env # 接続するサービスを指定 depends_on: - postgres postgres: # 公式からイメージをpull image: postgres:11.4-alpine # データベースの永続化 volumes: - postgres_data:/var/lib/postgresql/data env_file: .env.db

Gunicornのインストールと本番用設定ファイルの作成において、

context: ./app dockerfile: ./Dockerfile.prod

の部分を書き換えてからエラーが発生しました。

ディレクトリは、
docker-demo-with-djangoの下にこのファイルとdocker-compose.prod.yml docker-compose.yml
その下にDockerfile,
db.sqlite3 django_demo Dockerfile Dockerfile.prod entrypoint.prod.sh entrypoint.sh manage.py Pipfile Pipfile.lock
を置いています。

docker-compose.yml

version: '3.7' services: # サービス名は自由に設定 django: # appディレクトリの中から`Dockerfile`を探す build: ./app # サービス起動後に入力されるコマンドを設定 command: python manage.py runserver 0.0.0.0:8000 # データを永続化させる場合の設定。`host:container`でパスを記載 volumes: - ./app/:/usr/src/app/ # 開放するポートを指定。`host:container`でポートを記載 ports: - 8000:8000 # 環境変数を指定 environment: # 1ならデバックモード - DEBUG=1     # setting.pyに記載されているSECRET_KEYを記入 - SECRET_KEY=hoge

Docker.prod

# 公式からpython3.7 on alpine linuxイメージをpull FROM python:3.7-alpine # 作業ディレクトリを設定 WORKDIR /usr/src/app # 環境変数を設定 # Pythonがpyc filesとdiscへ書き込むことを防ぐ ENV PYTHONDONTWRITEBYTECODE 1 # Pythonが標準入出力をバッファリングすることを防ぐ ENV PYTHONUNBUFFERED 1 # psycopg2のインストール RUN apk update \ && apk add --virtual build-deps gcc python3-dev musl-dev \ && apk add postgresql-dev \ && pip install psycopg2 \ && apk del build-deps # Pipenvをインストール RUN pip install --upgrade pip \ && pip install pipenv # ホストのpipfileをコンテナの作業ディレクトリにコピー COPY ./Pipfile /usr/src/app/Pipfile # pipfileからパッケージをインストールしてDjango環境を構築 RUN pipenv install --skip-lock --system --dev # entrypoint.shをコピー COPY ./entrypoint.prod.sh /usr/src/app/entrypoint.prod.sh # ホストのカレントディレクトリ(現在はappディレクトリ)を作業ディレクトリにコピー COPY . /usr/src/app/ # entrypoint.shを実行 ENTRYPOINT ["/usr/src/app/entrypoint.prod.sh"]

docker-compose.prod.ymlのbulidの記述を怪しんでいて調べていますが、分からないで困っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

No such file or directory: './docker-compose.prod.yml' というエラーが出たということですね。

env_file: .env の記述が気になります。バグの可能性があり、似たようなケースとして こちらの記事 にあるような記述の変更を試みてはいかがでしょう。

投稿2021/04/09 10:03

zembutsu

総合スコア1584

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問