首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >testdriven.io django tdd - got错误:“$”在运行码头时不是一个有效的端口号

testdriven.io django tdd - got错误:“$”在运行码头时不是一个有效的端口号
EN

Stack Overflow用户
提问于 2021-09-28 19:31:16
回答 1查看 64关注 0票数 0

每次我尝试运行命令时

代码语言:javascript
复制
docker run --name django-tdd -e "PORT=8765" -p 8008:8765 registry.heroku.com/lit-sierra-68791/web:latest

我得到错误:'$‘不是一个有效的端口号

Dockerfile.prod

代码语言:javascript
复制
# pull official base image
FROM python:3.9.5-slim-buster

# set working directory
WORKDIR /usr/src/app

# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
ENV DEBUG 0
ENV SECRET_KEY fgerg345y4y56u5u5757jk5k56kuykykyk
ENV DJANGO_ALLOWED_HOSTS localhost 127.0.0.1 [::1]
ENV PORT 8765

# install system dependencies
RUN apt-get update \
  && apt-get -y install gcc postgresql \
  && apt-get clean

# add and install requirements
RUN pip install --upgrade pip
COPY ./requirements.txt .
RUN pip install -r requirements.txt

# add app
COPY . .

# add and run as non-root user
RUN adduser --disabled-password myuser
USER myuser

# run gunicorn
CMD gunicorn drf_project.wsgi:application --bind 0.0.0.0:$PORT

我甚至在上面的文件中添加了ENV端口8765,但它也没有工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-28 22:44:47

在CMD中不能引用ENV变量。

您可以通过创建一个读取变量并将其传递给CMD的脚本来解决这个问题。

创建文件bin/start.sh

代码语言:javascript
复制
#!/bin/sh
gunicorn drf_project.wsgi:application --bind 0.0.0.0:$PORT

更新Dockerfile

代码语言:javascript
复制
...
CMD ["bin/start.sh"]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69367526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档