
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
项目结构图

Windows问题
Docker Engine stopped
wsl --set-default-version 2
wsl --update