首页 > 解决方案 > Docker 拉取 Django 镜像并运行容器

问题描述

因此,我按照Docker 的教程创建了 Django 映像。

它完全可以在我的本地机器上运行,只需docker-compose up从我的项目的根目录运行一个命令。

但是,将图像推送到 docker hub https://hub.docker.com/repository/docker/vivanks/firsttry

我将图像拉到另一台机器上,然后运行:

docker run -p 8020:8020 vivanks/firsttry

但它没有开始并显示此错误:

退出(0)

谁能帮助我如何提取此图像并运行它?

我的 Dockerfile

FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/

我的 docker-compose.yml

  version: '3'
    
  services:
    db:
      image: postgres
      environment:
        - POSTGRES_DB=postgres
        - POSTGRES_USER=postgres
        - POSTGRES_PASSWORD=postgres
    web:
      build: .
      command: python manage.py runserver 0.0.0.0:8000
      volumes:
        - .:/code
      ports:
        - "8000:8000"
      depends_on:
        - db

标签: djangodocker

解决方案


Dockerfile没有指定 aCMDENTRYPOINT。当你跑...

docker run -p 8020:8020 vivanks/firsttry

...容器无关(这意味着它实际上会尝试启动 Python 交互式 shell,但由于您没有使用 分配终端-t,所以 shell 会退出。成功)。在您的docker-compose.yml中,您正在传递一个显式命令:

      command: python manage.py runserver 0.0.0.0:8000

所以等效的docker run命令行看起来像:

docker run -docker run -p 8020:8020 vivanks/firsttry python manage.py runserver 0.0.0.0:8000

但你可能想把它烤成Dockerfile这样:

CMD python manage.py runserver 0.0.0.0:8000

推荐阅读