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

我想使用Google Cloudrun服务部署容器,并且在他们的文档中看到需要指定PORT环境变量。我已经尝试了许多differentnet配置,但是我无法使其正常工作。我总是得到错误:
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环境变量?

感谢所有帮助,乔恩

最佳答案

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

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

关于django - 使用Cloudrun在Django Dockerfile中指定PORT,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56920944/

10-13 08:16