
 主 题 
前言
为了方便博客系统的一键部署,博客系统中的后端服务
blog-server增加了docke compose up -d命令一键打包镜像和部署容器。
前提条件
- blog-home-nuxt项目执行- npm run build:docker打包把输出文件- .output放到项目- blog-server中的- deploy/front/output文件夹中。
- blog-admin项目修改路由的- base为- /admin/xia-admin打包生成的dist文件夹放到项目- blog-server中的- deploy/front/admin/dist文件夹中。
- 准备构建mysql的初始化sql放进deploy/sql/init.sql。
- 编写docker-compose.yml文件,准备构建前端,nginx,nest服务的Dockerfile文件。
常用命令
            
            
              language
              
              
              
            
          
          docker network create frontend-networks # 手动创建一个外部网络
docker network connect <existing_network_name> <container_name> # 将新服务的容器手动加入网络
docker-compose up -d # 构建配置的镜像
docker-compose ps # 查看启动的容器
docker exec -it mysql bash # 查看对应容器
docker-compose down -v # 停止并删除容器、网络、卷(保留镜像)
docker image prune -a # 删除所有未被容器使用的镜像,包括中间层镜像
apt update && apt install -y iputils-ping # 容器里面安装调试网络工具
docker-compose build nginx # 打包单个镜像
docker-compose rm nginx # 移除单个容器问题坑点
- 打包blog-server镜像时安装依赖要使用该命令npm install --include=dev,要加上--include=dev不然只会安装package.json中dependencies的依赖。
- 部署docker打包生成的output打包成镜像后容器启动,node_modules依赖有问题;解决方法为进入容器/app/output/server文件夹执行npm install重新运行。或者选择docker打包(占内存大)
相关配置文件
Home Dockerfile
MySql初始化SQL
博客系统Nginx配置文件
Server Dockerfile
docker-compose.yml
            
            
              language
              
              
              
            
          
          # compose 自动创建子网共享网络
services:
 # mysql镜像 
  mysql:
    image: mysql:8.0.42
    restart: always
    volumes:
      - ./backups/mysql-backups:/backups
      - ./backups/db-data:/var/lib/mysql
      - ./deploy/sql/init.sql:/docker-entrypoint-initdb.d/init.sql  
    environment:
      MYSQL_ROOT_PASSWORD: jiangxia123!@#
      MYSQL_ROOT_HOST: 127.0.0.1
      MYSQL_DATABASE: myblog
      MYSQL_USER: jiangxia
      MYSQL_PASSWORD: jiangxia123!@#
    ports:
      # 宿主: 容器 只设置3306的话让宿主主机自动分配
      - 8366:3306
    networks:
      - backend-networks
  sever:
    build:
      context: .
      dockerfile: ./Dockerfile
    restart: always
    volumes:
      - ./backups/server/public:/app/public
    environment:
      NODE_ENV: production
    ports:
      - 5000:5000
    depends_on: # 服务依赖于mysql
      - mysql
    networks:
      - backend-networks
  nginx:
    build:
      context: .
      dockerfile: ./deploy/nginx/Dockerfile
    # volumes:
      # - ./public:/usr/share/nginx/html/public
      # - ./deploy/nginx/nginx.conf:/etc/nginx/nginx.conf  # 挂载配置文件
    environment:
      NODE_ENV:  production
    ports:
      - 80:80
    depends_on:
      - sever
      - home
    networks:
      - frontend-networks
      - backend-networks
  home:
    build:
      context: .
      dockerfile: ./deploy/front/Dockerfile
    environment:
      NODE_ENV: production
    ports:
      - 3000:3000
    networks:
      - frontend-networks
networks:
  frontend-networks:
    # external: true
  backend-networks:
全部评论(1)