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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章