准备
$ npx create-react-app@5.0.1 my-react-app
创建Dockerfile
# 指定node基础镜像
FROM node:18-alpine AS builder
# 指定工作目录
WORKDIR /app
# 复制package.json package-lock.json到app目录
COPY package.json package-lock.json /app/
# 运行npm install命令
RUN npm install --omit=dev
# 复制当前目录下的所有文件到app目录
COPY . /app
# 构建
RUN npm run build
# 选择更小体积的基础镜像
FROM nginx:alpine
# 将构建产物复制至nginx静态资源目录下
COPY --from=builder /app/build/ /usr/share/nginx/html/
# 暴露出运行的端口号,可对外接入服务发现
EXPOSE 80
# 启动 Nginx
CMD ["nginx", "-g", "daemon off;"]
构建镜像
docker build -t react-app:v1.0 .
测试
$ docker run -d -p 80:80 react-app:v1.0
进入容器
$ docker exec -it d57498a0508f /bin/bash
$ docker exec -it container_id /bin/sh