---
order: 15
title: 容器化
type: Advance
---

我们建议你以如下方式编写 `Dockerfile`：

1. 不要在 `Dockerfile` 外部构建再将 dist 拷入镜像，因为这样构建结果会取决于你的宿主机，这打破了标准化交付的原则

2. 尽可能使用分层构建，这样可以使镜像体积最小

3. 务必先拷贝 yarn.lock，再拷贝代码，这样可以复用 image layer，提升构建速度


``` dockerfile
FROM node:12.6-alpine as builder

WORKDIR /app
RUN npm i -g yarn
ADD package.json /app/package.json
ADD yarn.lock /app/yarn.lock
RUN yarn
ADD . /app
RUN yarn build

# +++++++++++++++++++++++++++++++++++++++++++++++++++
FROM nginx:1.9.0-alpine
RUN mkdir -p web/logs

COPY --from=builder app/dist/ /web/dist/
ADD build/nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80

```