[英]Docker Compose not reading env
这是一个经常被问到的问题。 我之前曾问过它,但在不同的错误条件下,但我似乎按照关于该主题的所有其他帖子所做的一切都是正确的,所以我转而寻求建议。 再次。
我有以下docker-compose.yml
:
version: "3.9"
services:
projects:
image: repo/apv_projects:2
ports:
- "27035:27035"
environment:
- JWT_SECRET_KEY_PROJECTS=${JWT_SECRET_KEY_PROJECTS}
- PROJECTS_HOST=${PROJECTS_HOST}
- PROJECTS_PORT=${PROJECTS_PORT}
- PROJECTS_DB_HOST=${PROJECTS_DB_HOST}
platform: "linux/amd64"
depends_on:
- mongodb
volumes:
- projects_data:/app
links:
- mongodb
mongodb:
image: repo/apv_projects_db:1
# command: [--auth]
ports:
- 27017:27017
environment:
- MONGO_INITDB_DATABASE=$MONGO_INITDB_DATABASE
- MONGO_INITDB_ROOT_USERNAME=$MONGO_INITDB_ROOT_USERNAME
- MONGO_INITDB_ROOT_PASSWORD=$MONGO_INITDB_ROOT_PASSWORD
platform: "linux/amd64"
volumes:
- mongodb_data:/app/data/mongodb
volumes:
projects_data:
mongodb_data:
我有以下.env
文件:
PROJECTS_HOST='127.0.0.1'
PROJECTS_PORT=27035
PROJECTS_DB_HOST='mongodb'
PROJECTS_DB_PORT=27017
MONGO_INITDB_DATABASE=apv
MONGO_INITDB_ROOT_USERNAME=admin
MONGO_INITDB_ROOT_PASSWORD=password
我运行以下命令:
docker compose --env-file .\.env up --build
但是 api(烧瓶)在127.0.0.1:5000
上启动。
Dockerfile
看起来像这样:
FROM python:3.9.12-slim
RUN apt-get update
RUN apt-get -y install sudo
RUN addgroup app && adduser -system app -ingroup app
RUN usermod -a -G sudo app
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
USER app
WORKDIR /app
RUN sudo mkdir data
COPY . .
RUN python3 -m pip install --upgrade pip
RUN pip3 install -r requirements.txt
CMD python3 api.py
EXPOSE 27017
EXPOSE 27035
然而结果是容器中的环境变量没有设置。 当我跑步时:
docker exec container env
我得到以下 output:
...
PROJECTS_HOST=
PROJECTS_PORT=
PROJECTS_DB_HOST=
...
以前的错误是我以sudo
( post ) 启动了 api。 不过现在这不是问题。
我已经设法解决了这个问题。 它与行尾有关。 .env
文件是在 Mac 上创建的,所以它有CR
行结尾,但我是在linux/amd64
平台上构建的,所以需要有LF
行结尾。 这导致环境变量被读取为单个字符串,因此根本没有设置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.