向您的Docker映像添加目录路径

时间:2018-09-30 03:18:45

标签: docker docker-compose dockerfile

我正在尝试将目录添加到我的Docker映像中。我尝试了以下方法。在构建过程中,我没有看到任何错误,但是一旦运行容器(我正在使用docker-compose)并进入docker exec -it 410e434a7304 /bin/sh,就看不到将其复制到的路径中的目录,也没有在执行docker inspect时将其视为卷。

方法1:经典mkdir

# Define working directory
WORKDIR /root

RUN cd /var \
    mdkir www \\ no www directory created
COPY <fileDirectory> /var/www/<fileDirectory>

方法2:数量

FROM openjdk:8u171 as build

# Define working directory
WORKDIR /root
VOLUME["/var/www"]

COPY <fileDirectory> /var/www/<fileDirectory>

2 个答案:

答案 0 :(得分:2)

您的第一种方法原则上是正确的,只是您的RUN语句是错误的。试试:

RUN cd /var && mkdir www

另外,请注意RUN mkdirVOLUME之间的根本区别:前者只是在您的容器上创建一个目录,而后者主要用于将目录从您的容器装载到容器的主机正在运行。

答案 1 :(得分:0)

这就是我的工作方式:

# Define working directory
WORKDIR /root

COPY <fileDirectory> /root/<fileDirectory>
RUN cd /var && mkdir www && cp -R /root/<fileDirectory> /var/www
RUN rm -rf /root/email-media

我必须将其从主机复制到docker image的工作目录/root并从/root to the desired destination. Later removed the directory from / root`

复制

不确定那是否是最干净的方法,如果我按照方法1使用@Fritz建议的正确语法,它将永远找不到所创建的路径并抛出错误。

运行RUN层后,它将删除容器(如下所示),并且在COPY行中将没有对在运行行中创建的路径的引用。

Step 16/22 : RUN cd /var && mkdir www && cp -R /root/<fileDirectory> /var/www
 ---> Running in a9c7df27116e
Removing intermediate container a9c7df27116e