Docker – 对执行和音量的误解
我的宠物项目中有一个如下的Dockerfile:
FROM java:8 ADD target/sources-registry-0.0.1-SNAPSHOT.jar sources-registry.jar RUN bash -c 'touch /sources-registry.jar' ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/sources-registry.jar"] EXPOSE 8761
而且一切都很完美 – 图像被创build并可以运行。 现在介绍一下这个项目:这是一个基于maven的项目,在实际执行Dockerfile之前,我必须手动运行mvn package
。
但是,如果我将Dokerfile更改为(因为我不想手动运行mvn package
并想自动运行它)
FROM java:8 RUN ls target RUN ./mvnw package ADD target/sources-registry-0.0.1-SNAPSHOT.jar sources-registry.jar RUN bash -c 'touch /sources-registry.jar' #ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/sources-registry.jar"] EXPOSE 8761
然后执行时,我得到/bin/sh: 1: ./mvnw: not found
。 但是, mvnw
在我的项目文件附近的pom.xml
。
更多,如果我只是跟随Dockerfile
FROM java:8 RUN ls target/
那么我得到ls: cannot access target/: No such file or directory
。
有人可以解释这种行为吗?
- 我的意思是为什么我实际上可以做一些目标文件夹(第一个Dockerfile),即使不存在(第三个Dockerfile)?
- 如何将项目文件(以及哪些文件)复制到创build的容器中?
- 主要问题:为什么第二个Dockerfile不工作? 我怎样才能使它工作?
ADD命令将sources-registry.jar
文件复制到Docker镜像中,以便第一个示例能够执行它。 如果您想使用容器内的任何其他文件,则还需要将它们包含在图像中(使用ADD或COPY)。 有关更多信息,请参阅参考文档
- 离线运行influxdb映像
- “无法连接到服务器'datahost':名称或服务未知”,gaierror(-2,'名称或服务未知')
- redirect_uri的参数值无效:非公开域不允许 – Spring社交login
- Docker文件并执行phpize错误
- 如何赋予docker容器在映射卷上写入/ chmod权限?
- 使用sysctl更改docker文件中的内核参数,正在运行的容器是否会影响Host内核
- 在一个依赖于mysql容器的python容器中运行alembic
- 在被调用的docker容器之外实例化docker容器
- 如何修复_wapi_connect错误查找在Win10作为主机的Ubuntu 16.04 Hyper-V VM上运行的CentOS 5 docker脚本的套接字句柄?