Dockerfile多階段構建之from==0


1.使用Docker node打包dist:

Dockerfile內容如下:

FROM node:12.13.1
LABEL maintainer="a@abc.com"
COPY . /app/
WORKDIR /app
RUN npm install --registry=https://registry.npm.taobao.org --cache=$HOME/.npm/.cache/cnpm --disturl=https://npm.taobao.org/dist --userconfig=$HOME/.cnpmrc
RUN npm run build

然后進行build:

 docker build -t node:v1 .

啟動node容器:

docker run -itd --name nodetest node:v1

進入node容器:

docker exec -it nodetest /bin/sh

可以看到dist文件夾已生成

 

 

2.修改Dockerfile,增加第二個FROM,內容如下:

FROM node:12.13.1
LABEL maintainer="a@abc.com"
COPY . /app/
WORKDIR /app
RUN npm install --registry=https://registry.npm.taobao.org --cache=$HOME/.npm/.cache/cnpm --disturl=https://npm.taobao.org/dist --userconfig=$HOME/.cnpmrc
RUN npm run build

FROM nginx
LABEL maintainer="a@abc.com"
COPY --from=0 /app/dist /usr/share/nginx/html

最后面的 --from=0 參數,從前邊的階段中拷貝文件到當前階段中,Dockerfile中包含多個FROM語句時,0代表第一個階段。除了使用數字,我們還可以給階段命名,比如:

FROM node:12.13.1 as node01
LABEL maintainer="a@abc.com"
COPY . /app/
WORKDIR /app
RUN npm install --registry=https://registry.npm.taobao.org --cache=$HOME/.npm/.cache/cnpm --disturl=https://npm.taobao.org/dist --userconfig=$HOME/.cnpmrc
RUN npm run build

FROM nginx
LABEL maintainer="a@abc.com"
COPY --from=node01 /app/dist /usr/share/nginx/html

這樣就不必再使用較大的node容器,直接使用較小的nginx容器即可

參考:https://my.oschina.net/u/3960163/blog/1944752

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM