【发布时间】:2017-03-23 14:56:39
【问题描述】:
以下代码在使用 docker-compose 在本地运行时有效。但是,当我将 Flask 和 nginx 容器推送到 ECS 并尝试从 Elastic Beanstalk 启动此应用程序时,引用我的 Dockerrun.aws.json 文件中的容器,如下所示,我无法无错误地启动我的应用程序。有谁知道如何格式化 Dockerrun.aws.json 文件?或者,问题出在其他地方吗?谢谢!
nginx/default.conf:
server {
listen 80;
server_name example.org;
charset utf-8;
location /static {
alias /usr/src/app/static;
}
location / {
proxy_pass http://web:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
nginx/Dockerfile:
FROM nginx
RUN mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.old
COPY default.conf /etc/nginx/conf.d/default.conf
web/app.py:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run()
网络/Dockerfile:
FROM python:3.5-onbuild
RUN apt-get update
RUN apt-get -y install python3
RUN apt-get -y install python3-pip
RUN apt-get -y install python3-dev
RUN pip3 install flask
Dockerrun.aws.json:
{
"AWSEBDockerrunVersion": 2,
"volumes": [
{
"name": "UsrSrcAppStatic",
"host": {
"sourcePath": "/usr/src/app/static"
}
},
{
"name": "WwwStatic",
"host": {
"sourcePath": "/www/static"
}
}
],
"containerDefinitions": [
{
"name": "web",
"image": "############.dkr.ecr.us-east-1.amazonaws.com/app_web",
"essential": true,
"memory": 4096,
"command": [
"/usr/local/bin/gunicorn",
"-w",
"2",
"-b",
":8000",
"app:app"
],
"mountPoints": [
{
"containerPath": "/usr/src/app/static",
"sourceVolume": "UsrSrcAppStatic"
}
]
},
{
"name": "nginx",
"image": "############.dkr.ecr.us-east-1.amazonaws.com/app_nginx",
"essential": true,
"portMappings": [
{
"hostPort": 80,
"containerPort": 80
}
],
"links": [
"web"
],
"mountPoints": [
{
"sourceVolume": "WwwStatic",
"containerPath": "/www/static"
}
],
"memory": 128,
"volumesFrom": [
{
"sourceContainer": "web"
}
]
}
]
}
我还关注了 nginx/php 多容器 example AWS 已发布没有问题。
【问题讨论】:
-
你解决了吗?我可以使用 ECS 和自我管理的集群运行我的堆栈,但希望将其移植到 EBS。他们不支持使用
docker-compose编排容器,所以我需要按照您的描述进行操作,即将我的撰写设置“翻译”成他们的 json 格式。
标签: docker flask amazon-elastic-beanstalk amazon-ecs