我现在正按照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
答案 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代码并自动在容器内看到更改。因此,只需重新启动容器即可更改新代码。