Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django docker的本地开发-我需要2个DockerFile吗?_Django_Docker_Dockerfile - Fatal编程技术网

Django docker的本地开发-我需要2个DockerFile吗?

Django docker的本地开发-我需要2个DockerFile吗?,django,docker,dockerfile,Django,Docker,Dockerfile,第一次尝试对django项目进行dockerize时,我知道对于生产,Dockerfile应该具有将django项目复制到容器中的ADD 但是对于本地开发,我需要对代码的每一个更改立即生效,因为我读到,建议在运行docker(docker run-v path:path)时装入一个卷,但这是否意味着我需要为本地开发使用不同的Dockerfile?不运行ADD命令的文件?否您可能不需要两个文件。您可以在卷中的“添加”命令中使用相同的文件夹 请参见docker官方页面上的django教程: Doc

第一次尝试对django项目进行dockerize时,我知道对于生产,Dockerfile应该具有将django项目复制到容器中的
ADD


但是对于本地开发,我需要对代码的每一个更改立即生效,因为我读到,建议在运行docker(docker run-v path:path)时装入一个卷,但这是否意味着我需要为本地开发使用不同的Dockerfile?不运行
ADD
命令的文件?

否您可能不需要两个文件。您可以在卷中的“添加”命令中使用相同的文件夹

请参见docker官方页面上的django教程:

Dockerfile

FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
version: '2'
services:
  db:
    image: postgres
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db
编写文件

FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
version: '2'
services:
  db:
    image: postgres
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

不必将本地文件夹绑定到容器路径,您可以创建一个卷,该卷可以存放在您想要的任何位置(如中所述,使用或甚至使用)

这样,您的数据将保存在一个可以访问的数据卷中:

  • 本地(本地持久化插件)
  • 或者仍然在本地,通过专用容器()装入该卷

    • 不需要2个DockerFile,如果您使用“docker run-v hostpath:containerpath”装载,即使containerpath已经存在,它也会装载hostpath

      我也会推荐这个解决方案。Flocker现在默认为Docker,因此易于使用。