如何避免需要对基础镜像进行更改并重新构建小应用程序容器来获取更改?

如何避免需要对基础镜像进行更改并重新构建小应用程序容器来获取更改?

我有两个独立的项目。第一个是几个较小项目之间共享的基本代码,第二个只是一个较小的项目,通过覆盖一些 CSS 等对 UI 进行更新,但这一个根本不涉及 React 或 NextJS 代码。

以下Dockerfile属于第一个项目:

FROM node:lts as builder
ENV NEXT_TELEMETRY_DISABLED 1
WORKDIR /app
COPY package*.json .
RUN npm i [email protected] -g  \
    && npm install
COPY --link . .
CMD ["npm", "run", "dev"]

这是docker-compose.yml

services:
  react-app:
    container_name: react_app
    platform: linux/amd64
    build:
      context: "."
      dockerfile: local/Dockerfile.local
    ports:
      - "3000:3000"
    volumes:
      - ./app/src:/app/src
      - ./app/package.json:/app/package.json
      - ./app/package-lock.json:/app/package-lock.json
    restart: unless-stopped

正如您所看到的,这是构建一个react_app图像,稍后我将使用该图像来构建较小的项目Dockerfile

FROM react_app:latest

WORKDIR /app
COPY --link . /app/src/styles/
COPY --link ./favicon.ico /app/public/favicon.ico
CMD ["npm", "run", "dev"]

和这个docker-compose.yml

services:
  small-app-1:
    container_name: small-app-1
    platform: linux/amd64
    image: react_app
    build:
        context: theme
        dockerfile: ../local/Dockerfile.local
    ports:
      - "11500:3000"
    volumes:
      - ./theme:/app/src/style/theme
      - ./app/package-lock.json:/app/package-lock.json
    restart: unless-stopped

(续)这个过程很乏味,因为我必须对基础映像进行代码级更改,然后重建较小的项目以实现这些更改。

我想知道是否有更好的方法来更改small-app容器的代码库。简而言之,我想编辑small-app容器中的基本代码,而不需要一直构建基础映像,然后重新构建映像small-app以获取更改。

我可以得到一些想法或建议吗?

相关内容