我正在尝试将目录添加到我的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>
答案 0 :(得分:2)
您的第一种方法原则上是正确的,只是您的RUN
语句是错误的。试试:
RUN cd /var && mkdir www
另外,请注意RUN mkdir
和VOLUME
之间的根本区别:前者只是在您的容器上创建一个目录,而后者主要用于将目录从您的容器装载到容器的主机正在运行。
答案 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