在多个Dockerfile目标之间共享设置代码

在多个Dockerfile目标之间共享设置代码,docker,dry,Docker,Dry,假设我有以下dockerfile: # Build # ----------------------------------------------------------------------------- FROM node:12.18.4 AS build WORKDIR /app RUN mkdir -p /app COPY package.json yarn.lock .npmrc ./ RUN yarn install --no-progress --frozen-lock

假设我有以下dockerfile:

# Build
# -----------------------------------------------------------------------------

FROM node:12.18.4 AS build

WORKDIR /app

RUN mkdir -p /app

COPY package.json yarn.lock .npmrc ./
RUN yarn install --no-progress --frozen-lockfile

COPY . .

# Release
# -----------------------------------------------------------------------------

FROM node:12-alpine AS release

RUN \
addgroup -S -g 1001 example && \
adduser -S -G example -u 1001 example && \
mkdir /app && \
chown example:example /app

WORKDIR /app

USER example

COPY --chown=example:example --from=build /app .

CMD ["./node_modules/.bin/ts-node", "--transpile-only", "./bin/http.ts"]

# Worker
# -----------------------------------------------------------------------------

FROM node:12-alpine AS worker

RUN \
addgroup -S -g 1001 example && \
adduser -S -G example -u 1001 example && \
mkdir /app && \
chown example:example /app

WORKDIR /app

USER example

COPY --chown=example:example --from=build /app .

CMD ["./node_modules/.bin/ts-node", "--transpile-only", "./bin/worker.ts"]

我如何遵循良好的DRY原则并在两个docker目标之间共享设置代码(例如,组/用户创建等)?

制作一个公共基础图像,并在此基础上构建目标。