Docker - 部署 Ant Design Pro 的项目

解读 Ant Design Pro 的 Docker 配置

package.json 的 scripts

-f: 使用什么配置文件
-t: 标签
up: 启动服务(的容器)
build: 构建或从新构建服务(的容器)html

"docker:dev": "docker-compose -f ./docker/docker-compose.dev.yml up",
"docker:build": "docker-compose -f ./docker/docker-compose.dev.yml build",
"docker-prod:dev": "docker-compose -f ./docker/docker-compose.yml up",
"docker-prod:build": "docker-compose -f ./docker/docker-compose.yml build",
"docker-hub:build": "docker build  -f Dockerfile.hub -t  ant-design-pro ./",
"docker:tag": "docker tag ant-design-pro chenshuai2144/ant-design-pro",
"docker:push": "npm run docker-hub:build && npm run docker:tag && docker push chenshuai2144/ant-design-pro"

docker-compose 配置

volumes:包含多个 volume,每一个 volume 有 3 个用冒号分割的域:名称(或相对该配置文件的路径): 容器中的路径: 是否只读node

build:指定构建容器的上下文(根路径)和使用的配置文件(不指定默认为 Dockerfile)nginx

  • docker-compose.dev.yml
version: "3.5"

services:
  ant-design-pro_build:
    build: ../
    container_name: "ant-design-pro_build"
    volumes:
      - dist:/usr/src/app/dist

  ant-design-pro_web:
    image: nginx
    ports:
      - 80:80
    container_name: "ant-design-pro_web"
    restart: unless-stopped
    volumes:
      - dist:/usr/share/nginx/html:ro
      - ./nginx.conf:/etc/nginx/conf.d/default.conf

volumes:
  dist:
  • docker-compose.yml
version: "3.5"

services:
  ant-design-pro_dev:
    ports:
      - 8000:8000
    build:
      context: ../
      dockerfile: Dockerfile.dev
    container_name: "ant-design-pro_dev"
    volumes:
      - ../src:/usr/src/app/src
      - ../config:/usr/src/app/config
      - ../mock:/usr/src/app/mock

.dockerignore 配置

在配置 Dockerfile 的ADDCOPY是会根据这个配置进行忽略,如node_modules跟项目环境有关,不该该直接将当前的node_modules文件夹直接复制到 Docker 镜像中,应该配置忽略node_modules使用RUN yarn或者RUN npm install安装到 Docker 镜像中git

# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
**/node_modules
/src/utils/request-temp.js

# production
/.vscode

# misc
.DS_Store
npm-debug.log*
yarn-error.log

/coverage
.idea
yarn.lock
package-lock.json
*bak
.vscode

# visual studio code
.history
*.log

functions/mock
.temp/**

# umi
.umi
.umi-production

# screenshot
screenshot
.firebase

Dockerfile 配置

  • Dockerfile
FROM circleci/node:latest-browsers

WORKDIR /usr/src/app/
USER root
COPY package.json ./
RUN yarn

COPY ./ ./

RUN npm run test:all

CMD ["npm", "run", "build"]
  • Dockerfile.dev
FROM node:latest

WORKDIR /usr/src/app/

COPY package.json ./
RUN npm install --silent --no-cache

COPY ./ ./


CMD ["npm", "run", "start"]
  • Dockerfile.hub
FROM nginx

WORKDIR /usr/src/app/

COPY ./docker/nginx.conf /etc/nginx/conf.d/default.conf

COPY ./dist  /usr/share/nginx/html/

EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]

部署本身的 Docker 项目

相关文章
相关标签/搜索