docker-composeファイルと同じフォルダーにない場合、.envファイルに問題があります。 それをサブフォルダーに配置して参照すると、変数が未定義であると単純に示され、デフォルトで空白の文字列になります。 .envファイルを削除すると、.envファイルが見つからないと表示されるため、ファイルは検出されますが、何も実行されません。 .envファイルをdocker-composeファイルと同じディレクトリに移動し、そのパスを更新するか、代わりにシンボリックリンクを作成すると、すべて正常に機能します。
どうやらdocker-composeには、docker-composeファイルと同じディレクトリにないenvファイルのロードに問題があるようです。
現在、サブフォルダー内のLaravelプロジェクトと共有されている.envファイルをシンボリックリンクすることで、これを「修正」しました。
私のdocker-composeファイル(簡略化):
version: '3'
services:
mysql:
image: mariadb
volumes:
- mysql_data:/var/lib/mysql/data
env_file:
- ./api/.env
environment:
MYSQL_DATABASE: ${DB_DATABASE}
MYSQL_USER: ${DB_USERNAME}
MYSQL_PASSWORD: ${DB_PASSWORD}
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
volumes:
mysql_data:
ねえ@ shin-、私は正確な問題を抱えています。
公式ドキュメント(https://docs.docker.com/compose/env-file/)と、投稿したトピックを読みましたが、質問に答えられませんでした。 OPが言ったように、.envファイルがdocker-compose.ymlのパスとは異なるパスにある場合、それは機能しません。
version: '3.7'
services:
postgres:
image: postgres:alpine
restart: always
environment:
POSTGRES_DB: ${DB_NAME}
POSTGRES_USER: ${DB_USER}
POSTGRES_PASSWORD: ${DB_PASSWORD}
php:
build:
context: .
dockerfile: ./docker/php/Dockerfile
restart: always
env_file:
- ./app/.env
volumes:
- ./app:/usr/src/app
nginx:
image: nginx:1.15.3-alpine
restart: always
volumes:
- ./app:/usr/src/app
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
ports:
- ${NGINX_PORT}:80
depends_on:
- php
./app/の中に、独自の.envを持つsymfonyアプリケーションがあり、イメージの構築に使用されるenv変数を同じ.envに入れて、それを機能させるために、2つの.envがあります。1つはdocker-にあります。私のアプリディレクトリにディレクトリと1つを作成します
Afaik環境変数はアプリケーションにインポートされますが、docker-composeファイルで使用することはできません(NGINX_PORTで行ったように。同じディレクトリに別の.envファイルを使用し、本当に必要な場合はアプリケーションからロードします。本当に必要です。
最も参考になるコメント
ねえ@ shin-、私は正確な問題を抱えています。
公式ドキュメント(https://docs.docker.com/compose/env-file/)と、投稿したトピックを読みましたが、質問に答えられませんでした。 OPが言ったように、.envファイルがdocker-compose.ymlのパスとは異なるパスにある場合、それは機能しません。
./app/の中に、独自の.envを持つsymfonyアプリケーションがあり、イメージの構築に使用されるenv変数を同じ.envに入れて、それを機能させるために、2つの.envがあります。1つはdocker-にあります。私のアプリディレクトリにディレクトリと1つを作成します