ng-alain 工程已經下載到本地,且使用npm run build 打包了,生成一個 dist 目錄,這個目錄就是咱們打包後的前端工程html
將打包鏡像所須要的文件及目錄都上傳,包括:前端
先看看原始的Dockerfile 文件的內容:node
# STEP 1: Build FROM node:8-alpine as builder LABEL authors="cipchk <cipchk@qq.com>" COPY package.json package-lock.json ./ RUN npm set progress=false && npm config set depth 0 && npm cache clean --force RUN npm i && mkdir /ng-alain && cp -R ./node_modules ./ng-alain WORKDIR /ng-alain COPY . . RUN npm run build # STEP 2: Setup FROM nginx:1.13.5-alpine COPY --from=builder /ng-alain/_nginx/default.conf /etc/nginx/conf.d/default.conf COPY --from=builder /ng-alain/_nginx/ssl/* /etc/nginx/ssl/ RUN rm -rf /usr/share/nginx/html/* COPY --from=builder /ng-alain/dist /usr/share/nginx/html CMD [ "nginx", "-g", "daemon off;"]
ng-alain 做者考慮很周全,把在服務器上打包前端工程的過程也寫出來了,不過打包的過程在本身電腦上能夠完成,就不用將整個ng-alain 目錄複製到服務器了,因此只需將上一節列出的內容複製到服務器就行,而後修改Dockerfile 內容,以下:nginx
FROM nginx:1.13.5-alpine COPY ./_nginx/default.conf /etc/nginx/conf.d/default.conf COPY ./_nginx/ssl/* /etc/nginx/ssl/ RUN rm -rf /usr/share/nginx/html/* COPY ./dist /usr/share/nginx/html CMD [ "nginx", "-g", "daemon off;"]
實際上就是把step 1 的過程刪除了docker
此時的目錄結構是:npm
[root@nancy ng-alain]# ll total 16 drwxr-xr-x 3 root root 4096 Dec 10 09:28 dist -rw-r--r-- 1 root root 150 Nov 22 08:48 docker-compose.yml -rw-r--r-- 1 root root 607 Dec 10 09:37 Dockerfile drwxr-xr-x 3 root root 4096 Dec 10 09:30 _nginx [root@nancy ng-alain]# pwd /home/hadmin/ng-alain [root@nancy ng-alain]#
執行命令:json
[root@nancy ng-alain]# docker build -t ng-alain .
查看鏡像:bash
[root@nancy ng-alain]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE ng-alain latest 4f973803079c 41 minutes ago 25.8 MB docker.io/nginx 1.13.5-alpine ea7bef82810a 6 weeks ago 15.51 MB hub.c.163.com/library/busybox latest d20ae45477cb 3 months ago 1.129 MB [root@nancy ng-alain]#
這樣鏡像就生成了服務器
須要讓鏡像在後臺啓動,執行命令:ui
docker run -d -p 80:80 ng-alain
或者
docker run -d -p 80:80 ng-alain nginx -g 'daemon off;'
這樣就能夠訪問了:DEMO