【发布时间】:2022-01-10 02:07:31
【问题描述】:
我是 Docker 的新手,我需要运行一个已经由另一个开发人员编写的 dokcerized django 项目,这是 Dockerfile.dev:
FROM python:alpine
RUN apk update \
&& apk add --virtual build-deps gcc python3-dev musl-dev \
&& apk add postgresql-dev \
&& apk add jpeg-dev zlib-dev libjpeg
ENV PYTHONUNBUFFERED 1
WORKDIR /app
COPY requirements.txt /tmp/
RUN pip install --requirement /tmp/requirements.txt
COPY entrypoint.sh /app/
ENTRYPOINT [ "./entrypoint.sh" ]
EXPOSE 8000
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
和 dcoker-compose.yml :
services:
event:
build:
context: .
dockerfile: Dockerfile.dev
volumes:
- ./:/app
env_file:
- ./envs/development.env
command:
bash -c "python manage.py makemigrations && python manage.py migrate && python manage.py runserver 0.0.0.0:8000"
ports:
- "8000:8000"
depends_on:
- event-database
event-database:
image: postgres:alpine
env_file:
- ./envs/development.db.env
networks:
default:
name: mizban
当我使用 docker build --tag 创建映像,然后使用 docker run imageid 运行它时,它不会运行 CMD 部分以在 0.0.0.0:8000 端口上运行项目有什么建议吗?
【问题讨论】:
-
您正在运行的实际命令是什么;除了图像 ID,
docker run还有其他选项吗?您是在使用您显示的 Compose 设置,还是只是运行普通的docker命令?当你说“它不运行CMD”时,是什么导致你得出这个结论? -
你试过docker-compose up -d吗,这个命令读取compose文件,会构建docker镜像。不需要做 docker build 和 docker run。
-
@DavidMaze 是的,我在 Docker run 中使用图像 ID 对不起我的英文不好