我有一个与 MongoDB 一起运行的 Flask 应用程序。
在本地,当我使用下面的代码构建并运行容器时,该应用程序在本地运行得非常好。
docker-compose build
docker-compose up
这些是创建的容器:
/application$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9e054b28bb46 application_web "/bin/sh -c 'python …" 38 seconds ago Up 37 seconds 0.0.0.0:80->80/tcp, 27017/tcp application_web_1
2a19a8e9a267 mongo:3.0.2 "/entrypoint.sh mong…" 39 seconds ago Up 38 seconds 0.0.0.0:27017->27017/tcp application_db_1
我的 app.py 中有以下内容:
MONGODB_HOST = os.environ['DB_PORT_27017_TCP_ADDR']
MONGODB_PORT = 27017
app = Flask(__name__)
bootstrap = Bootstrap(app)
client = MongoClient(MONGODB_HOST, MONGODB_PORT)
docker-compose.yml
web:
build: .
command: python -u app.py
ports:
- "80:80"
volumes:
- .:/project
environment:
MONGODB_HOST: db
links:
- db
db:
image: mongo:3.4
command: mongod
ports:
- "27017:27017"
Dockerfile
FROM python:3.6.1-alpine
MAINTAINER <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="ff929a9d9e8d94969e94979e939693bf98929e9693d19c9092" rel="noreferrer noopener nofollow">[email protected]</a>
WORKDIR /project
ADD . /project
RUN pip install -r requirements.txt
EXPOSE 80
EXPOSE 27017
CMD ["mongod"]
ENV NAME Cheppers_DevOps_Challenge
ENTRYPOINT python app.py
我面临的问题是,将镜像推送到 AWS ECS 后,然后使用给定的容器镜像推送存储库创建集群,我总是在任务定义日志中收到此错误:
2019-10-08 14:19:02
MONGODB_HOST = os.environ['DB_PORT_27017_TCP_ADDR']
KeyError: 'DB_PORT_27017_TCP_ADDR'
最佳答案
我建议你更改 mongo 主机:
MONGODB_HOST = "db"
这个os.environ['DB_PORT_27017_TCP_ADDR']
将使用自 compose
以来您不需要的容器的 IP 地址将使用服务名称为您处理该问题。
我认为AWS
以不同方式处理 IP 地址,而不是 dict
不再(“KeyError”)
关于python - 如何在AWS ECS上的Flask/MongoDB中设置环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58286330/