项目部署-docker
整体部署
version: '2'
networks:
network:
ipam:
driver: default
config:
- subnet: '177.7.0.0/16'
services:
redis:
image: redis:7.0.0
container_name: redis
ports:
- 6379:6379
privileged: true
networks:
network:
ipv4_address: 177.7.0.10
volumes:
- /var/data/redis:/usr/local/etc/redis
- /var/data/redis/data:/data
command: [ '-- requirepass 密码', '-- appendonly yes' ]
mysql:
image: mysql:5.7
container_name: mysql
ports:
- 3306:3306
privileged: true
networks:
network:
ipv4_address: 177.7.0.11
volumes:
- /var/data/mysql/mysql:/var/lib/mysql
- /var/data/mysql/mysql.cnf:/etc/mysql/conf.d/mysql.cnf
- /var/data/mysql/initdb:/docker-entrypoint-initdb.d
environment:
MYSQL_DATABA: 数据库名字
MYSQL_ROOT_PASSWORD: 密码
command:
[
'mysqld',
'--character-set-server=utf8',
'--collation-server=utf8_unicode_ci',
'--default-time-zone=+8:00',
'--lower-case-table-names=1'
]
emqx:
image: emqx:5.1
container_name: emqx
ports:
- 1883:1883
- 8083:8083
- 8084:8084
- 18083:18083
privileged: true
networks:
network:
ipv4_address: 177.7.0.12
volumes:
- /etc/localtime:/etc/localtime
- /var/data/emqx/etc/emqx.conf:/opt/emqx/etc/emqx.conf
- /var/data/emqx/etc/acl.conf:/opt/emqx/etc/acl.conf
- /var/data/emqx/etc/log:/opt/emqx/log
environment:
SET_CONTAINER_TIMEZONE: "true"
CONTAINER_TIMEZONE: Asia/Shanghai
java:
image: openjdk:8-jre
container_name: java
ports:
- 8080:8080
- 8888:8888
- 8889:8889/udp
- 5061:5061/udp
privileged: true
networks:
network:
ipv4_address: 177.7.0.13
depends_on:
- emqx
- redis
- mysql
- tdengine
- zlmedia-record
volumes:
- /var/data/java/fastbee-admin.jar:/server.jar
- /var/data/java/libtaos.so:/usr/lib/libtaos.so
- /var/data/java/uploadPath:/uploadPath
- /var/data/java/logs:/logs
- /etc/localtime:/etc/localtime
environment:
TZ: Asia/Shanghai
entrypoint: java -jar /server.jar
nginx:
image: nginx:stable
container_name: nginx
ports:
- 80:80
- 443:443
- 15060:15060/udp
privileged: true
networks:
network:
ipv4_address: 177.7.0.14
depends_on:
- java
volumes:
- /var/data/nginx/vue:/usr/share/nginx/html
- /var/data/nginx/view:/usr/share/nginx/view
- /var/data/nginx/h5:/usr/share/nginx/h5
- /var/data/nginx/www:/usr/share/nginx/www
- /var/data/nginx/doc:/usr/share/nginx/doc
- /var/data/nginx/ssl:/usr/share/nginx/ssl
- /var/data/nginx/nginx.conf:/etc/nginx/nginx.conf
- /var/data/nginx:/var/log/nginx
zlmedia-record:
build:
context: /var/data/zlmedia/record
container_name: zlmedia-record
privileged: true
restart: always
ports:
- 18081:18081
- 8082:80
- 8443:443
- 554:554
- 1935:1935
- 8000:8000
- 30000-30100:30000-30100/udp
expose:
- "80"
- "443"
- "554"
- "1935"
volumes:
- /var/data/zlmedia/record/fastbee-record.jar:/fastbee-record.jar
- /var/data/zlmedia/record/logs:/opt/assist/logs
- /var/data/zlmedia/logs:/opt/media/bin/log
- /var/data/zlmedia/data/www:/opt/media/bin/www
- /var/data/zlmedia/conf/config.ini:/opt/media/conf/config.ini
- /var/data/zlmedia/conf/default.pem:/opt/media/bin/default.pem
networks:
network:
ipv4_address: 177.7.0.15
拆分部署
运行容器前,没有网桥,请先创建网桥,用于容器间通讯:
docker network create -d bridge fastbee-bridge
nginx
执行一下命令安装nginx,安装完成后,前端运行打包,把dist文件夹中内容上传到
/var/data/nginx/vue
目录下
docker run \
--name nginx \
--volume /var/data/nginx/vue:/usr/share/nginx/html \
--volume /var/data/nginx:/usr/share/nginx \
--volume /var/data/nginx/nginx.conf:/etc/nginx/nginx.conf \
--volume /var/data/nginx/log:/var/log/nginx \
--publish 80:80 \
--publish 443:443 \
--network fastbee-bridge \
--restart unless-stopped \
--detach \
nginx:stable
tip: 遇到一些插曲,解决办法如下:
sudo vim /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.m.daocloud.io/",
"https://huecker.io/",
"https://dockerhub.timeweb.cloud",
"https://noohub.ru/",
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn",
"https://xx4bwyg2.mirror.aliyuncs.com",
"http://f1361db2.m.daocloud.io",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
]
}
systemctl restart docker
redis
运行容器前,没有网桥,请先创建网桥,用于容器间通讯:
docker network create -d bridge fastbee-bridge
执行下面命令安装,其中
requirepass
是访问密码
docker run \
--name redis \
--publish 6379:6379 \
--volume /var/data/redis:/usr/local/etc/redis \
--volume /var/data/redis/data:/data \
--network fastbee-bridge \
--restart unless-stopped \
--detach \
redis:7.0.0 \
--requirepass "密码" \
--appendonly yes
mysql
官方的Mysql镜像默认采用latin编码,不支持中文,改为utf8编码,同时设置了时区和大小写敏感
MYSQL_ROOT_PASSWORD 是root账户密码
- 执行命令安装Mysql
docker run \
--name mysql \
--publish 3306:3306 \
--env TZ=Asia/Shanghai \
--env MYSQL_DATABASE="数据库名" \
--env MYSQL_ROOT_PASSWORD=密码\
--volume /var/data/mysql/mysql:/var/lib/mysql \
--volume /var/data/mysql/mysql.cnf:/etc/mysql/conf.d/mysql.cnf \
--volume /var/data/mysql/initdb:/docker-entrypoint-initdb.d \
--network fastbee-bridge \
--restart unless-stopped \
--detach \
mysql:5.7 \
--character-set-server=utf8 \
--collation-server=utf8_unicode_ci \
--lower-case-table-names=1
进入容器内部,执行命令:
docker exec -it mysql /bin/bash
修改编码,直接复制进去执行,exit用于退出容器
tee /etc/mysql/conf.d/mysql.cnf <<-'EOF' [client] default-character-set=utf8 [mysql] default-character-set=utf8 EOF exit
使用Mysql管理工具(例如 Navcat),打开fastbee数据库,导入项目中的
springboot/sql/fastbee.sql
脚本。
java
后端打包的文件fastbee-admin.jar上传到 /var/data/java 目录下
然后执行一下命令
docker run \ --name java \ --publish 8080:8080 \ --volume /var/data/java/fastbee-admin.jar:/server.jar \ --volume /var/data/java/uploadPath:/uploadPath \ --volume /var/data/java/logs:/logs \ --volume /etc/localtime:/etc/localtime \ --env "TZ=Asia/Shanghai" \ --network fastbee-bridge \ --restart unless-stopped \ --detach \ openjdk:8-jre \ java -Duser.timezone=Asia/Shanghai -jar /server.jar
说明:
--name # 容器名称 --publish # 容器端口映射 --volume # 挂载卷路径,容器文件持久化到服务器 --env # 设置容器环境变量 --network # 网络模式 container/none/bridge/host几种 --restart # 重启方式 no/on-failure/always/unless-stopped几种 --detach # 后台运行
emqx
执行一下命令安装emqx5.1
docker run \
--name emqx \
--publish 1883:1883 \
--publish 8083:8083 \
--publish 8883:8883 \
--publish 8084:8084 \
--publish 18083:18083 \
--env TimeZone=Asia/Shanghai \
--volume /etc/localtime:/etc/localtime \
--network fastbee-bridge \
--restart unless-stopped \
--detach \
emqx:5.1
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 jungle8884@163.com