我是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 part来在0.0.0.0:8000端口上运行项目,有什么建议吗?
发布于 2021-12-04 01:03:49
entrypoint始终优先于command。您的文件Dockerfile.dev同时包含ENTRYPOINT和CMD。在本例中,CMD用作ENTRYPOINT的参数。
因此,如果您只想运行command而不是entrypoint,则需要用一个空字符串覆盖entrypoint部分。
请参考以下示例。
services:
event:
build:
context: .
dockerfile: Dockerfile.dev
volumes:
- ./:/app
env_file:
- ./envs/development.env
entrypoint: ""
command:
bash -c "python manage.py makemigrations && python manage.py migrate && python manage.py runserver 0.0.0.0:8000"
ports: ...https://stackoverflow.com/questions/70218832
复制相似问题