将Django Docker容器部署到弹性beantalk

时间:2020-08-15 23:57:10

标签: django amazon-web-services docker amazon-elastic-beanstalk

我有一个配置了nginx + gunicorn的django rest框架应用程序。我可以使用docker-compose up -d --build在本地运行容器,但是我希望将Docker映像部署到AWS Elastic beantalk。

出于调试目的,我正在尝试eb local run,但似乎收到此错误:

latest: Pulling from <user>/<repo>
Digest: sha256:15cec14272aca0b787c4209e3196b2e61d50732f6f4616f2cf50baa28b82c65c
Status: Image is up to date for <user>/<repo>:latest
docker.io/<user>/<repo>:latest
Sending build context to Docker daemon  316.7MB
Step 1/2 : FROM <user>/<repo>:latest
 ---> eex74e02e4e5
Step 2/2 : EXPOSE 8000
 ---> Using cache
 ---> 094f132e13a7
Successfully built 094f132e13a7
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.
docker: invalid reference format.
See 'docker run --help'.
ERROR: CommandError - None

这是我的Dockerrun.aws.json:

{
    "AWSEBDockerrunVersion": "1",
    "Image": {
      "Name": "<user>/<repo>:latest",
      "Update": "true"
    },
    "Ports": [
      {
        "ContainerPort": "8000"
      }
    ]
}

如果我实际部署到EB,我会在日志中看到以下错误:

----------------------------------------
/var/log/web.stdout.log
----------------------------------------
Aug 15 22:26:00 ip-172-31-24-230 web: File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
Aug 15 22:26:00 ip-172-31-24-230 web: File "<frozen importlib._bootstrap>", line 983, in _find_and_load
Aug 15 22:26:00 ip-172-31-24-230 web: File "<frozen importlib._bootstrap>", line 965, in _find_and_load_unlocked
Aug 15 22:26:00 ip-172-31-24-230 web: ModuleNotFoundError: No module named 'application'
Aug 15 22:26:00 ip-172-31-24-230 web: [2020-08-15 22:26:00 +0000] [3815] [INFO] Worker exiting (pid: 3815)
Aug 15 22:26:00 ip-172-31-24-230 web: [2020-08-15 22:26:00 +0000] [3808] [INFO] Shutting down: Master
Aug 15 22:26:00 ip-172-31-24-230 web: [2020-08-15 22:26:00 +0000] [3808] [INFO] Reason: Worker failed to boot.
Aug 15 22:26:00 ip-172-31-24-230 web: [2020-08-15 22:26:00 +0000] [3820] [INFO] Starting gunicorn 20.0.4
Aug 15 22:26:00 ip-172-31-24-230 web: [2020-08-15 22:26:00 +0000] [3820] [INFO] Listening at: http://127.0.0.1:8000 (3820)

为什么会出现此错误?

1 个答案:

答案 0 :(得分:0)

要在EB上使用docker,您有两个选择:

因为您使用的是Dockerrun.aws.json v1,所以应该使用Docker running on 64bit Amazon Linux 2/3.1.0平台(单个docker),而不是Python 3.7 running on 64bit Amazon Linux 2/3.1.0

受支持的单泊坞窗平台的列表为here

在控制台中为:

enter image description here