我用Dockerfile,docker-compose.yml和dockerrun.aws文件创建了一个新的Django项目。
这就是我的项目结构的样子:
dockerproject
-.idea
-dockerapp
-views.py
-urls.py
-models.py
-...
-dockerproject
-templates
-venv
-db.sqlite3
-docker-compose.yml
-Dockerfile
-Dockerrun.aws
-manage.py
-requirements
这是我的Dockerfile,docker-compose.yml(来自docker docs“ Compose and Django”)和dockerrun.aws的代码:
Dockerfile:
FROM ubuntu:15.04
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
EXPOSE 8000
docker-compose.yml:
version: '2'
services:
web:
build: .
command: python3 manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
db:
image: postgres
dockerrun.aws:
{
"AWSEBDockerrunVersion": "1",
"Volumes": [
{
"ContainerDirectory": "/var/app",
"HostDirectory": "/var/app"
}
],
"Logging": "/var/eb_log"
}
如果我通过Docker-machine(Kitematic)在本地运行Docker容器,则通过在浏览器中输入以下网址可以使Django网站正常运行: dockermachine的IP地址:8000 / index.html
但是,如果我将所有项目文件(项目结构,请参见上文)压缩为一个zip文件并将其上传到弹性beantalk,则它会处于降级状态,并显示以下错误消息:
Application deployment failed at 2018-07-18T19:18:34Z with exit status 1 and error: Hook /opt/elasticbeanstalk/hooks/appdeploy/enact/00run.sh failed.
这里是Elastic Beanstalk配置,用于将dockerize django应用程序部署到Elastic Beanstalk中:
上传的Zip文件包含以下文件和文件夹:
-.idea
-dockerapp
-views.py
-urls.py
-models.py
-...
-dockerproject
-templates
-venv
-db.sqlite3
-docker-compose.yml
-Dockerfile
-Dockerrun.aws
-manage.py
-requirements
我已附加一个Zip文件,该文件必须作为弹性beantalk应用程序成功上传。
原因是什么,我的Docker配置在本地工作,但不能在弹性beantalk中工作?
预先感谢您的帮助。
最好的问候,
awsuser93