保存和加载后Docker-compose env var丢失

时间:2018-03-28 13:42:43

标签: python docker flask environment-variables docker-compose

我正在尝试使用基于docker-compose的烧瓶实例进行部署 这个配置:

搬运工-compose.yml

version: '2'
services:
  flask:
    container_name: myproject
    image: myproject
    build: .
    env_file: dev.env
    ports:
    - "5000:5000"

dev.env

FLASK_HOST=0.0.0.0
FLASK_PORT=5000
FLASK_DEBUG=1

Dockerfile

FROM ubuntu:latest
RUN apt-get update -y
RUN apt-get install -y python-pip python-dev build-essential
RUN mkdir /app
WORKDIR /app
COPY requirements.txt /app/requirements.txt
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
COPY . /app
CMD python ./app/run.py
EXPOSE ${FLASK_PORT}

本地一切正常,但当我尝试加载图像备份并在另一台机器上的容器中运行时,我收到以下错误:

Traceback (most recent call last):
  File "./app/run.py", line 10, in <module>
    port = int(os.environ.get("FLASK_PORT"))
TypeError: int() argument must be a string or a number, not 'NoneType'

似乎没有更多的环境变量。我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

docker-compose.yml中没有魔法,它只是Docker命令的总结。

对于您的情况,启动容器的最终命令类似于:

docker run --env-file=xxx ...

此env文件从未转移到另一台计算机。