RUN mkdir / code和ADD的含义是什么? /码/

时间:2018-02-28 05:59:47

标签: mysql django docker docker-compose

我现在正按照Docker的说明创建一个Django + MySQL项目。但对于Dockerfile,任何人都可以解释为什么我们有这两行吗?

FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code  <=====Why we need to mkdir here, will /code dir be delete after build?
RUN mkdir /code/db
WORKDIR /code
ADD ./mysite/requirements.txt /code/  <==For my understanding, here we copy our local requirements file into image's /code dir?
RUN pip install -r requirements.txt
ADD . /code/  <== What's this step doing? Copying all my current dir's content into /code? why we do this?

在docker-compose.yml中,有这样的行:

web:
  build: .
  command: python ./mysite/manage.py runserver 0.0.0.0:8000
  volumes:
   < - .:/code > 
  ports:
    - "8000:8000"
  links:
    - db

1 个答案:

答案 0 :(得分:0)

RUN mkdir /code

此行将在名为/的代码下创建一个目录。该目录将包含currentlt驻留在主机上.的代码。

ADD ./mysite/requirements.txt /code/ 

将主机上的python requirements.txt添加到容器内的code目录中。

RUN pip install -r requirements.txt

在容器内安装需求。

ADD . /code/

将主机中的python代码添加到/code目录

中的容器中
volumes:
 < - .:/code >

将主机上的curent目录挂载到容器/code目录中。您可能想知道为什么这样做并且代码已经通过ADD . /code/

添加了

这是一种用于开发目的的聪明技术。您不必在每次更改python代码时重建映像,而是可以挂载python代码并自动在容器内看到更改。因此,只需重新启动容器即可更改新代码。