Docker基础:11.dockerfile构建前端静态资源

121 阅读1分钟

准备

$ 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

# 报错
# OCI runtime exec failed: exec failed: unable to start container process: exec: "/bin/bash": stat /bin/bash: no such file or directory: unknown
# 
# 原因
# 制作镜像时使用了精简版,只装了sh命令,未安装bash。
# 解决:
$ docker exec -it container_id /bin/sh