使用Cloudrun在Django Dockerfile中指定PORT

时间:2019-07-07 09:35:15

标签: django docker port google-cloud-run

我有一个基本的Django 2应用(starterproject)在Docker容器中本地运行。这工作正常,我可以访问网站。

我想使用Google Cloudrun服务部署容器,并且在他们的文档中看到需要指定PORT环境变量。我已经尝试了许多differnetnet配置,但是我无法使其工作。我总是会收到错误:

Cloud Run error: Container failed to start. Failed to start and then listen on the port defined by the PORT environment variable. Logs for this revision might contain more information.

日志没有信息。

我的基本Docker文件是:

FROM python:3.7-alpine
ENV PYTHONBUFFERED 1

COPY ./requirements.txt ./requirements.txt
RUN pip install -r ./requirements.txt

RUN mkdir /app
WORKDIR /app
COPY ./app /app

RUN adduser -D user
RUN chown -R user:user /app
RUN chmod 755 /app
USER user

我的docker-compose文件是:

version: "3"

services:
  app:
    build:
      context: .
    ports: 
      - "$PORT:8000"
    volumes:
      - ./app:/app
    command: sh -c "python manage.py runserver 0.0.0.0:8000"

故障排除在这里:https://cloud.google.com/run/docs/troubleshooting

在哪里以及如何正确使用PORT环境变量?

乔恩,感谢所有帮助

1 个答案:

答案 0 :(得分:3)

根据documentation,启动HTTP服务器的代码应考虑其自身环境的PORT变量。文档还说,实际上,PORT始终为8080,但是您的代码无论如何都应该使用env var来实现可移植性。

您可能想看看Python quickstart。那里的每个示例都展示了如何访问PORT env var各自的语言和运行时。

相关问题