简介
很久之前就研究过 Docker,苦于一直没有找到应用场景(毕竟经常写的是前端)
最近在研究 Scratch-Blocks
,每次打包都需要在虚拟机里面打包(因为需要 Python 和 Java 环境),还比较慢。 今天就尝试了一下是不是可以用 Docker 来打包,这样就可以直接挂服务器上一键打包了。结果是肯定的,当然没问题
Dockerfile
既然是 Docker, 那第一步肯定是写 Dockerfile 和 Dockerignore 了,Dockerignore 根据项目写就完了,语法和 gitignore 一样
需要注意的是,要缓存 node_modules,所以在执行 build 命令之前需要先单独复制 yarn.lock 文件,然后执行 yarn install --ignore-scripts
达到缓存 node_modules 的目的
这是因为 RUN, COPY, ADD
指令每次都会创建中间容器(缓存用),这样每次 yarn.lock 改变才会执行 yarn install
命令,这样也就达到了缓存 node_modules 的目的
有时候可能还需要 package.json
文件,这里也加上
Dockerfile
# linux core, only 5M
FROM alpine
WORKDIR /app
# install nodejs python java
RUN apk update && apk add python nodejs yarn openjdk8
# cache node_modules accord by yarn.lock
COPY yarn.lock /app
COPY package.json /app
RUN yarn install --ignore-scripts
COPY . /app
# build
RUN yarn build
然后打包 docker build --rm -f "Dockerfile" -t scratch-blocks:latest .
,收工完成
文中提到的命令以及参数请参考 docker build 文档、Dockerfile 文档
完