为什么Dockerfile可以构建,但是即使它可以手动运行也不能正常工作?

时间:2020-08-18 21:05:16

标签: docker dockerfile docker-volume

我一直在努力使它运行很多小时。我一直在搜索docker文档,github仓库和其他内容,但由于某种原因我无法使其正常工作。

我的dockerfile:

FROM mattrayner/lamp:latest-1804

WORKDIR /app
RUN  wget -O /tmp/lwt.zip http://downloads.sourceforge.net/project/lwt/lwt_v_1_6_3.zip && \
     yes A | unzip /tmp/lwt.zip &&\
     rm /tmp/lwt.zip &&\
     mv connect_xampp.inc.php connect.inc.php
EXPOSE 80

CMD ["/run.sh"]

它正常构建,没有任何错误,但是当我运行该映像时,/app目录中什么也没有出现,并且在浏览器上仅显示了一个基本的 Welcome to LAMP 视图。

尽管

如果我执行docker run -p "80:80" -it -v ${PWD}/app:/app mattrayner/lamp:latest-1804 /bin/bashcd /app,请复制并粘贴

wget -O /tmp/lwt.zip http://downloads.sourceforge.net/project/lwt/lwt_v_1_6_3.zip && \
     yes A | unzip /tmp/lwt.zip &&\
     rm /tmp/lwt.zip &&\
     mv connect_xampp.inc.php connect.inc.php

如果我退出并运行相同的docker run命令,它仍然不起作用

Docker LAMP指令也指出要完全按照我的意愿做:

FROM mattrayner/lamp:latest-1804

# Your custom commands

CMD ["/run.sh"]

按照这些说明进行操作时,我认为一切都会很好。

这里有什么收获?它可能与中间容器有关,但我无法理解(我不是行业的开发人员或开发人员,只是一个业余爱好者)。

1 个答案:

答案 0 :(得分:4)

发生这种情况是因为您正在这样做:

  1. 在您的docker映像的/app目录中下载文件(wget ...)。
  2. 在那之后,您在装载卷时覆盖了docker build目录,其中包含$ PWD / app的内容。

如果要在某些目录中安装plt.legend(loc="upper right") ,请不要装入同一路径。

如果您需要在同一路径中放置某些内容,则可以装入一些具体文件,但不能装入整个目录,否则它将覆盖创建容器时在Docker映像中的内容。

您可以在其他地方安装wget或将其下载到$ {PWD} / app中,然后进行安装。