dockerfile context问题

docker buld -t xx:xx .等于将当前目录(包含Dockerfile)发送到docker服务端,然后所有的操作都是在这个目录里面进行的。所以如果要移动宿主机的文件到容器是不行的,解决把法就是把需要的文件都放到此目录里面来。

WORKDIR /xx等于是接下来在容器工作的目录,操作其他数据都是相当于以此目录为相对目录

FROM openjdk:8
ENV TZ=Asia/Shanghai
RUN mkdir -p /app
WORKDIR /app
COPY ./target/love-0.0.1-SNAPSHOT.jar /app/
CMD java -jar love-0.0.1-SNAPSHOT.jar

之前不太理解上方的方式,workdir /app了,下方又是COPY ./target,而/app下无target目录啊。其实不然,这两个路径压根没关系,COPY始终是以context为根目录的,不管workdir是什么他COPY都是以context为根。而下方的CMD就和workdir有关了。
为了更好的理解,将COPY和workdir交换一下位置可能就自然一点,虽然本质并没有改变,像这样:

FROM openjdk:8
ENV TZ=Asia/Shanghai
RUN mkdir -p /app
COPY ./target/love-0.0.1-SNAPSHOT.jar /app/
WORKDIR /app
CMD java -jar love-0.0.1-SNAPSHOT.jar
posted @ 2021-01-08 15:42  神一样的存在  阅读(758)  评论(0编辑  收藏  举报