我有一个基本的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/