程序谷 认真生活 享受生活

贞明电子系统服务Docker一键部署

⚠️ 本文最后更新于2024年07月09日,已经过了389天没有更新,若内容或图片失效,请留言反馈
ALEqnn

mysql配置文件

存放数据库数据和初始化脚本
mysql

nginx配置文件

存放nginx配置文件和前端文件
nginx

emqx配置文件

存放emqx的配置文件
emqx

docker-compose文件

需要注意的是网络改成host模式

 version: "3.3"
services:
  mysql:
    image: mysql
    container_name: mysql
    restart: always
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: 123456
    volumes:
      - "./mysql/data:/var/lib/mysql"
      - "./mysql/init:/docker-entrypoint-initdb.d"
    network_mode: "host"
  nginx:
    image: nginx
    container_name: nginx
    restart: always
    volumes:
      - "./nginx/html:/usr/share/nginx/html"
      - "./nginx/nginx.conf:/etc/nginx/nginx.conf"
    depends_on:
      - zm
    network_mode: "host"
  redis:
    image: redis
    container_name: redis
    restart: always
    network_mode: "host"
  emqx:
    image: emqx
    container_name: emqx
    restart: always
    volumes:
      - ./emqx/etc:/opt/emqx/etc
    network_mode: "host"
  zm:
    build:
      context: .
      dockerfile: ./zm/Dockerfile
    container_name: zm
    restart: on-failure
    depends_on:
      - mysql
      - redis
      - emqx
    network_mode: "host"

Dockerfile

Dockerfile文件放在项目根目录

# node镜像
FROM node

# 设置时区
# RUN apk --update add tzdata \
#     && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
#     && echo "Asia/Shanghai" > /etc/timezone \
#     && apk del tzdata

# 这个是容器中的文件目录
RUN mkdir -p /usr/src/app 

# 设置工作目录
WORKDIR /usr/src/app

# 拷贝package.json文件到工作目录
# !!重要:package.json需要单独添加。
# Docker在构建镜像的时候,是一层一层构建的,仅当这一层有变化时,重新构建对应的层。
# 如果package.json和源代码一起添加到镜像,则每次修改源码都需要重新安装npm模块,这样木有必要。
# 所以,正确的顺序是: 添加package.json;安装npm模块;添加源代码。
# COPY ./package.json /usr/src/app/package.json

# 安装npm依赖(使用淘宝的镜像源)
# RUN npm i 
# 使用淘宝的镜像源或者其他源,可根据情况修改 --registry
# RUN npm i --production --registry=https://registry.npm.taobao.org

# 拷贝所有源代码到工作目
COPY ./zm /usr/src/app
# 暴露容器端口
EXPOSE 7001
CMD [ "npm", "start" ]

注意!node后台需要将package.json中npm start里面的--daemon去掉

  //package.json
  "scripts": {
    "start": "egg-scripts start --daemon --title=rimeiserver --ignore-stderr",
  }
  //改成
  "scripts": {
    "start": "egg-scripts start --title=rimeiserver --ignore-stderr",
  }

运行脚本

如果没有预下载镜像则不需要load,直接使用docker-compose命令

#!/bin/bash
docker load -i ./images/emqx.tar
docker load -i ./images/mysql.tar
docker load -i ./images/nginx.tar
docker load -i ./images/redis.tar
docker load -i ./images/node.tar

docker-compose up -d

项目结构图

9Y5pdV

Windows问题

Docker Engine stopped

wsl --set-default-version 2
wsl --update
By 大芃展翅 On
此页面评论区已关闭
程序谷 |  蜀ICP备2020031553号-1