python - Docker 错误 - CommandError:“0.0.0.0:”不是有效的端口号或地址:端口对
问题描述
所以我有一个 docker 文件,我打算构建并推送到 Google Cloud Run,它看起来像这样:
# pull official base image
FROM python:3.7-slim
# set work directory
WORKDIR /usr/src/app
# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# install dependencies
RUN pip install --upgrade pip
COPY ./requirements.txt /usr/src/app/requirements.txt
RUN pip install -r requirements.txt
# copy project
COPY . /usr/src/app/
CMD python manage.py runserver 0.0.0.0:$PORT
这个想法是,一旦我将它推送到 Cloud Run,我的 Django 项目将在 0.0.0.0:$PORT 上运行,其中环境变量 $PORT 的值由 Google Cloud Run 自动设置。
我尝试在本地运行以下图像的容器以查看是否可行。我将 $PORT 设置为 80,然后当我运行 docker 映像的容器时,我得到以下信息:
"CommandError: "0.0.0.0:" is not a valid port number or address:port pair."
查看其他答案,例如this。
我知道 0.0.0.0 是给定机器的公共 IP 地址的占位符。我的问题是,为什么我在docker run [DockerImage]
本地运行时没有收到“CommandError”?
如果还有其他问题,请告诉我,我会澄清的。
编辑:我还想指出我正在关注本教程
解决方案
在主机上设置环境变量不会在容器内设置它。
该命令python manage.py runserver 0.0.0.0:$PORT
正在未设置的容器内运行$PORT
,因此它扩展为python manage.py runserver 0.0.0.0:
.
尝试将容器内的环境变量docker run -e PORT=$PORT <your_image>
设置PORT
为主机中的值。
推荐阅读
- python - 当 PermissionDenied 异常引发时 Django 打印错误
- java - 日期函数为伊斯兰日期获得额外的一天 - Kotlin
- json - 具有最大值和最小值的 JSON Schema 枚举
- saml-2.0 - Blazor 服务器端 - SAML2 身份验证
- dolphindb - 计算累积的“出价”和“要价”比率
- python - 在不同数据集上训练 tensorFlow Vgg16 算法
- c++ - 在多线程 C++ 应用程序中控制控制台 I/O
- java - 返回应用程序屏幕后如何检查辅助功能权限是否已打开
- react-native - 如何从一个堆栈导航到另一个堆栈?
- windows - Windows 批量选择具有最高版本号的文件夹中的所有文件