Docker Error - CommandError: "0.0.0.0:" is not a valid port number or address:port pair
Docker Error - CommandError: "0.0.0.0:" is not a valid port number or address:port pair
所以我有一个 docker 文件,我打算构建并推送到 Google Cloud 运行,它看起来像这样:
# 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
我的想法是,一旦我将它推送到云端 运行,我的 Django 项目就会 运行 在 0.0.0.0:$PORT 上,其中环境变量 $PORT 的值由Google云运行自动。
我尝试在本地 运行 下图的容器,看看是否可行。我将 $PORT 设置为 80,然后当我 运行 一个 docker 图像的容器时,我得到以下信息:
"CommandError: "0.0.0.0:" is not a valid port number or address:port pair."
正在看其他答案,比如.
我知道 0.0.0.0 是给定机器的 public IP 地址的占位符。我的问题是,为什么我在本地 运行 docker run [DockerImage]
时没有得到 "CommandError"?
如果还有其他问题,请告诉我,我会澄清的。
编辑:
我还想指出,我正在关注 this tutorial
在主机上设置环境变量不会在容器内设置它。
命令 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
环境变量设置为来自主机的值。
您没有在 Dockerfile 中设置 PORT
env 变量,这就是它在 CMD 执行期间无法解析 $PORT
的原因。
您可以按如下方式更新您的 Dockerfile(我以 8080
为例,将其更新为所需的端口):
# 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
ENV PORT 8080
# 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
希望对您有所帮助
所以我有一个 docker 文件,我打算构建并推送到 Google Cloud 运行,它看起来像这样:
# 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
我的想法是,一旦我将它推送到云端 运行,我的 Django 项目就会 运行 在 0.0.0.0:$PORT 上,其中环境变量 $PORT 的值由Google云运行自动。
我尝试在本地 运行 下图的容器,看看是否可行。我将 $PORT 设置为 80,然后当我 运行 一个 docker 图像的容器时,我得到以下信息:
"CommandError: "0.0.0.0:" is not a valid port number or address:port pair."
正在看其他答案,比如
我知道 0.0.0.0 是给定机器的 public IP 地址的占位符。我的问题是,为什么我在本地 运行 docker run [DockerImage]
时没有得到 "CommandError"?
如果还有其他问题,请告诉我,我会澄清的。
编辑: 我还想指出,我正在关注 this tutorial
在主机上设置环境变量不会在容器内设置它。
命令 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
环境变量设置为来自主机的值。
您没有在 Dockerfile 中设置 PORT
env 变量,这就是它在 CMD 执行期间无法解析 $PORT
的原因。
您可以按如下方式更新您的 Dockerfile(我以 8080
为例,将其更新为所需的端口):
# 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
ENV PORT 8080
# 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
希望对您有所帮助