【发布时间】:2018-08-07 22:32:22
【问题描述】:
我现在按照 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
【问题讨论】:
-
"谁能解释一下为什么我们有这两行?"创建目录。
-
@tkausl 是的,我知道它是用来创建目录的。但是为什么我们需要创建这样的目录呢?构建后会删除 /code 目录吗?它是构建期间的临时目录吗?
-
不,它不会,除非在 dockerfile 后面的某个地方有一个
RUN rm -rf /code。 “但是为什么我们需要创建这样的目录呢?”它是您的代码(项目)所在的位置。 -
@tkausl 嗨,我再次编辑了我的问题。你现在可以看到 docker-compose.yml 文件了。在这个文件中,带有 的行是挂载我们的本地目录。到图像目录/代码?为什么?我们为什么这样做?我的理解是如果我们改变本地目录的内容,那么它会映射到图像中的代码目录?
标签: mysql django docker docker-compose