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