一、mysql安装
简单安装
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
mysql
mysql容器本地挂载
cd /usr
mkdir mysql
cd mysql/
mkdir data
mkdir conf
mkdir init
可以手动导入自己的数据库信息
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
-v /usr/mysql/data:/var/lib/mysql \
-v /usr/mysql/conf:/etc/mysql/conf.d \
-v /usr/mysql/init:/docker-entrypoint-initdb.d \
mysql
然后就可以连接了
常见操作指令
# 4.查看root目录,可以发现~/mysql/data目录已经自动创建好了
ls -l mysql
# 结果:
总用量 4
drwxr-xr-x. 2 root root 20 5月 19 15:11 conf
drwxr-xr-x. 7 polkitd root 4096 5月 19 15:11 data
drwxr-xr-x. 2 root root 23 5月 19 15:11 init
# 查看data目录,会发现里面有大量数据库数据,说明数据库完成了初始化
ls -l data
# 5.查看MySQL容器内数据
# 5.1.进入MySQL
docker exec -it mysql mysql -uroot -p123
# 5.2.查看编码表
show variables like "%char%";
# 5.3.结果,发现编码是utf8mb4没有问题
+--------------------------+--------------------------------+
| Variable_name | Value |
+--------------------------+--------------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8mb3 |
| character_sets_dir | /usr/share/mysql-8.0/charsets/ |
+--------------------------+--------------------------------+
# 6.查看数据
# 6.1.查看数据库
show databases;
# 结果,hmall是黑马商城数据库
+--------------------+
| Database |
+--------------------+
| hmall |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
# 6.2.切换到hmall数据库
use hmall;
# 6.3.查看表
show tables;
# 结果:
+-----------------+
| Tables_in_hmall |
+-----------------+
| address |
| cart |
| item |
| order |
| order_detail |
| order_logistics |
| pay_order |
| user |
+-----------------+
# 6.4.查看address表数据
+----+---------+----------+--------+----------+-------------+---------------+-----------+------------+-------+
| id | user_id | province | city | town | mobile | street | contact | is_default | notes |
+----+---------+----------+--------+----------+-------------+---------------+-----------+------------+-------+
| 59 | 1 | 北京 | 北京 | 朝阳区 | 13900112222 | 金燕龙办公楼 | 李佳诚 | 0 | NULL |
| 60 | 1 | 北京 | 北京 | 朝阳区 | 13700221122 | 修正大厦 | 李佳红 | 0 | NULL |
| 61 | 1 | 上海 | 上海 | 浦东新区 | 13301212233 | 航头镇航头路 | 李佳星 | 1 | NULL |
| 63 | 1 | 广东 | 佛山 | 永春 | 13301212233 | 永春武馆 | 李晓龙 | 0 | NULL |
+----+---------+----------+--------+----------+-------------+---------------+-----------+------------+-------+
4 rows in set (0.00 sec)
可以自己试试
exit退出
可以创建一个网络
docker network create network1
# 2.然后查看网络
docker network ls
# 3.让dd和mysql都加入该网络,注意,在加入网络时可以通过--alias给容器起别名 # 这样该网络内的其它容器可以用别名互相访问!
# 3.1.mysql容器,指定别名为db,另外每一个容器都有一个别名是容器名
docker network connect network1 mysql --alias db
我这里就不用了
docker network connect network1 mysql
docker network inspect network1
可以进入容器
docker exec -it 容器名称 bash
二、安装elasticsearch
1、直接安装
docker network create hm-net
docker run -d \
--name es \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
-e "discovery.type=single-node" \
-v es-data:/usr/share/elasticsearch/data \
-v es-plugins:/usr/share/elasticsearch/plugins \
--privileged \
--network hm-net \
-p 9200:9200 \
-p 9300:9300 \
elasticsearch:7.12.1
2、分步安装(如果下载不了)
2.1 创建网络(单点部署)
因为我们还需要部署 kibana 容器,因此需要让 es 和 kibana 容器互联,所有先创建一个网络:
docker network create es-net
2.2加载镜像
采用的版本为 7.12.1 的 elasticsearch;自己 pull 是非常大的有 1G 左右
百度网盘
链接: https://pan.baidu.com/s/1Xa2nhYn3yX4i1e9Rt8mE_w
提取码: ri83
docker load -i es.tar
2.3 运行
docker run -d \
--name es \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
-e "discovery.type=single-node" \
-v es-data:/usr/share/elasticsearch/data \
-v es-plugins:/usr/share/elasticsearch/plugins \
--privileged \
--network es-net \
-p 9200:9200 \
-p 9300:9300 \
elasticsearch:7.12.1
命令解释:
-e "cluster.name=es-docker-cluster":设置集群名称
-e "http.host=0.0.0.0":监听的地址,可以外网访问
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m":内存大小
-e "discovery.type=single-node":非集群模式
-v es-data:/usr/share/elasticsearch/data:挂载逻辑卷,绑定es的数据目录
-v es-logs:/usr/share/elasticsearch/logs:挂载逻辑卷,绑定es的日志目录
-v es-plugins:/usr/share/elasticsearch/plugins:挂载逻辑卷,绑定es的插件目录
--privileged:授予逻辑卷访问权
--network es-net :加入一个名为es-net的网络中
-p 9200:9200:端口映射配置
浏览路径为:9200 端口
三、安装Kibana
1、直接安装
docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
--network=hm-net \
-p 5601:5601 \
kibana:7.12.1
2、分布安装(网络下载不了就用)
2.1下载
链接: https://pan.baidu.com/s/1K1Eu50epB7FsXo_unHwwCA 提取码: jwqq
2.2解压
docker load -i kibana.tar
2.3运行 docker 命令,部署 kibana
docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
--network=es-net \
-p 5601:5601 \
kibana:7.12.1
--network es-net :加入一个名为es-net的网络中,与elasticsearch在同一个网络中
-e ELASTICSEARCH_HOSTS=http://es:9200":设置elasticsearch的地址,因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch
-p 5601:5601:端口映射配置
kibana启动一般比较慢,需要多等待一会,可以通过命令:
docker logs -f kibana
如果有下面,说明成功了
浏览路径为:5601 端口
3.安装 IK 分词器
3.1.在线安装 ik 插件(方法一)
# 进入容器内部
docker exec -it elasticsearch /bin/bash
# 在线下载并安装
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip
#退出
exit
#重启容器
docker restart elasticsearch
3.2.离线安装 ik 插件(方法二)
3.2.1.查询数据卷目录
docker volume inspect es-plugins
显示结果:
[
{
"CreatedAt": "2024-07-09T10:39:55+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/es-plugins/_data",
"Name": "es-plugins",
"Options": null,
"Scope": "local"
}
]
3.2.2百度网盘下载
链接: https://pan.baidu.com/s/18e5I1V8uibD5NTxFJI7IFg 提取码: 2bk7
cd /var/lib/docker/volumes/es-plugins/_data
3.2.3解压分词器安装包
3.2.4. 重启容器
docker restart es
查看启动日志
docker logs -f es
测试
IK分词器包含两种模式:
- ik_smart:最少切分
- ik_max_word:最细切分
4. 扩展词词典
在IKAnalyzer.cfg.xml配置文件内容添加:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 *** 添加扩展词典-->
<entry key="ext_dict">ext.dic</entry>
</properties>
新建一个 ext.dic,可以参考config目录下复制一个配置文件进行修改
重启elasticsearch
docker restart es
# 查看 日志
docker logs -f elasticsearch
日志中已经成功加载ext.dic配置文件
5)测试效果:
注意当前文件的编码必须是 UTF-8 格式,严禁使用Windows记事本编辑
5. 停用词词典
在互联网项目中,在网络间传输的速度很快,所以很多语言是不允许在网络上传递的,如:关于宗教、政治等敏感词语,那么我们在搜索时也应该忽略当前词汇。
IK分词器也提供了强大的停用词功能,让我们在索引时就直接忽略当前的停用词汇表中的内容。
IKAnalyzer.cfg.xml配置文件内容添加:
在 stopword.dic 添加停用词
重启elasticsearch
# 重启服务
docker restart elasticsearch
docker restart kibana
# 查看 日志
docker logs -f elasticsearch
日志中已经成功加载stopword.dic配置文件
测试效果:
注意当前文件的编码必须是 UTF-8 格式,严禁使用Windows记事本编辑
6.部署es集群
部署es集群可以直接使用docker-compose来完成,不过要求你的Linux虚拟机至少有4G的内存空间
version: '2.2'
services:
es01:
image: docker.elastic.co/elasticsearch/elasticsearch:7.12.1
container_name: es01
environment:
- node.name=es01
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es02,es03
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data01:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- elastic
es02:
image: docker.elastic.co/elasticsearch/elasticsearch:7.12.1
container_name: es02
environment:
- node.name=es02
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es03
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data02:/usr/share/elasticsearch/data
networks:
- elastic
es03:
image: docker.elastic.co/elasticsearch/elasticsearch:7.12.1
container_name: es03
environment:
- node.name=es03
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es01,es02
- cluster.initial_master_nodes=es01,es02,es03
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- data03:/usr/share/elasticsearch/data
networks:
- elastic
volumes:
data01:
driver: local
data02:
driver: local
data03:
driver: local
networks:
elastic:
driver: bridge
docker-compose up
四、安装MongoDB
1.docker 拉取mysql镜像
docker pull mongo:latest
2.运行容器
创建外部挂载的文件并进行授权
mkdir -p /mydata/mongo/config
mkdir -p /mydata/mongo/data
mkdir -p /mydata/mongo/logs
touch /mydata/mongo/config/mongod.conf
chmod 777 /mydata/mongo
然后,使用编辑器打开mongod.conf文件,
cd /mydata/mongo/config
vim mongod.conf
并添加以下内容:
# 数据库存储路径
dbpath=/mydata/mongo/data
# 日志文件路径
logpath=/mydata/mongo/logs/mongod.log
# 监听的端口
port=27017
# 允许所有的 IP 地址连接
bind_ip=0.0.0.0
# 启用日志记录
journal=true
# 是否后台运行
fork=true
# 启用身份验证
#auth=true
运行MongoDB容器
docker run -dit --name mongo \
-p 27017:27017 \
-v /mydata/mongo/config/mongod.conf:/etc/mongod.conf \
-v /mydata/mongo/data:/data/db \
-v /mydata/mongo/logs:/var/log/mongodb \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=123456 \
--restart=always \
mongo
参数说明
-i:表示运行容器
-t:表示容器启动后进入其命令行
-d:守护式方式创建容器在后台运行
-name:容器名称
-p 27017:27017 端口映射 前面是外部访问端口:后面内部开发的端口,mongoDB默认是27017端口
-v /mydata/mongo/data:/data/db 给容器内部的数据文件指向mongodbdata ,即删除了容器,容器数据也不会丢失,下次创建容器继续挂载到/mydata/mongo/data即可看到删除容器之前的数据
-e MONGO_INITDB_ROOT_USERNAME=admin
-e MONGO_INITDB_ROOT_PASSWORD=123456 指定容器内的环境变量 初始化容器账号、密码
--restart=always 容器挂掉后自动重启
进入容器内部
docker exec -it mongo /bin/mongosh
//或
docker exec -it mongo bash
//登录容器
mongo admin -u admin -p 123456 -u 后面的是创建容器指定的账号 -p 后面跟的是创建容器指定的密码
说明:
如果MongoDB6.0及以上使用:
docker exec -it mongo /bin/mongosh
如果是6.0以下的版本使用:
docker exec -it mongo /bin/mongo
mongo中各个角色对应的权限
权限 说明
read 允许用户读取指定数据库
readWrite 允许用户读写指定数据库
dbAdmin 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin 允许用户向system.users集合写入,可以在指定数据库里创建、删除和管理用户
clusterAdmin 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限
readAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限
root 只在admin数据库中可用。超级账号,超级权限
进入mongodb
docker exec -it 容器名称 mongo
五、安装redis
docker run --restart=always -p 6379:6379 --name myredis -d redis:6.2.1 --requirepass ningzaichun
或
docker run --restart=always \
-p 6379:6379 \
--name myredis \
-v /home/dj/redis/redis.conf:/etc/redis/redis.conf \
-v /home/dj/redis/data:/data \
-d redis:7.0.12 redis-server /etc/redis/redis.conf
docker使用 参考地址CentOS Docker 安装 | 菜鸟教程 (runoob.com)
安装redis参考
https://www.runoob.com/docker/docker-install-redis.html
5.2.1 redis镜像拉取
查看可用的redis版本,执行命令:docker search redis
拉取Redis镜像:从Docker Hub上获取Redis官方镜像,执行命令:docker pull <镜像名称>:<版本号>
docker pull redis
如果拉取失败就换源
yum install -y yum-utils
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1. 挂载redis的配置文件:redis.conf
(1) 建立配置文件放置目录,执行命令:mkdir 目录/redis/conf/
(2) 生成配置文件,执行命令:touch redis.conf
(3) 写入内容:redis.conf的标准文件在redis官网也可以找到
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1
#bind 127.0.0.1
protected-mode no
port 6379
tcp-backlog 511
requirepass 000415
timeout 0
tcp-keepalive 300
daemonize no
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile ""
databases 30
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-disable-tcp-nodelay no
replica-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no
appendonly yes
appendfilename "appendonly.aof"
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-max-len 128
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
2. 挂载redis的持久化文件
建立数据文件放置目录,执行命令:mkdir 目录/redis/data/
3.3 启动redis容器
docker run -p 6379:6379 --restart=always \
--log-opt max-size=100m \
--log-opt max-file=2 \
--name myredis \
-v /root/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /root/redis/data:/data \
-d redis redis-server /etc/redis/redis.conf \
--appendonly yes --requirepass 123456
参数说明:
1.-restart=always 总是开机启动
2.-log 记录日志
3.-p 端口映射
4.-name 容器名
5.-v 数据卷挂载
6.-d redis 后台启动redis
7.redis-server /etc/redis/redis.conf 以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录 /etc/redis/redis.conf,也就是linux下的 /home/redis/myredis/myredis.conf
8.-appendonly yes 开启持久化
9.-requirepass 123456 设置密码
简单的启动命令示例:docker run --name myredis -p 6379:6379 -d redis
查看本地redis镜像,执行命令:
docker images
关闭容器命令:docker stop <容器名>
示例:docker stop myredis
3.4 验证Redis容器是否正常运行
- 查看容器的运行信息,验证Redis容器是否正常运行:
docker ps
- 查看指定容器状态:
docker ps -a | grep myredis
- 查看容器运行日志:
docker logs --since 30m <容器名>
此处 --since 30m 为查看此容器30分钟之内的日志情况 - 容器内部连接测试:
docker exec -it <容器名> /bin/bash
-
查看所有在运行的容器:docker ps -a
-
关闭容器:docker stop <容器名>
删除容器:docker rm <容器名>
查看全部镜像 命令:docker images
删除镜像 命令 :docker rmi <容器 id>
六、安装nginx
docker pull nginx:1.24.0
docker run -p 80:80 -d --name nginx nginx:1.24.0
拷贝 Nginx 主配置文件/etc/nginx/nginx.conf
:
# nginx容器名、/etc/nginx/nginx.conf 配置文件容器内的地址
# D:\Programing\Docker\volumns\nginx\conf 宿主机上拷贝的目标地址
docker cp nginx:/etc/nginx/nginx.conf D:\Programing\Docker\volumns\nginx\conf
Nginx 主配置文件包含了影响 Nginx 全局行为的命令,包括事件处理、HTTP 服务器的基本配置(如监听端口、文件路径等)、日志文件位置以及其他重要配置。
拷贝 html 目录:/usr/share/nginx/html
docker cp nginx:/usr/share/nginx/html D:\Programing\Docker\volumns\nginx
这是 Nginx 的默认文档根目录。当您使用 Nginx 来提供静态网页服务时,放置在此目录下的文件和目录将可以通过 web 访问。(注:可以在配置文件 server 块中,使用 root 指令指定根目录)
正式运行镜像
拷贝文件完成后,删除第一次试运行的 nginx 容器:
正式运行 nginx,将宿主机上的配置文件和文档根目录挂载到容器上:
# 多行便于展示()
docker run -p 81:80 \
--network api-my_net \
-d --name nginx \
-v D:\Programing\Docker\volumns\nginx\conf\nginx.conf:/etc/nginx/nginx.conf \
-v D:\Programing\Docker\volumns\nginx\conf\conf.d:/etc/nginx/conf.d \
-v D:\Programing\Docker\volumns\nginx\html:nginx:/usr/share/nginx/html \
nginx:1.24.0
# 可直接复制该行命令运行
docker run -p 81:80 --network my_net -d --name nginx -v D:\Programing\Docker\volumns\nginx\conf\nginx.conf:/etc/nginx/nginx.conf -v D:\Programing\Docker\volumns\nginx\conf\conf.d:/etc/nginx/conf.d -v D:\Programing\Docker\volumns\nginx\html:/usr/share/nginx/html nginx:1.24.0
参数解释:
--network:将容器加入到名为 my_net 的网络。注:如果该网络不存在,docker 会报错。若网络不存在,需要执行docker network create my_net创建。
-p:端口映射,冒号前为宿主机端口,冒号后为容器内的端口,即宿主机上访问 81 端口的 HTTP 请求会被交给 nginx 容器的 80 端口。
-d:后台运行容器;
--name:指定容器名称,本例中名称为 nginx。
-v:挂载配置文件、html 目录到宿主机;冒号前为宿主机文件路径,冒号后为挂载到容器中的路径。可以看到宿主机被挂载的三个目录/文件是第一次运行时从容器内拷贝出来的,
七、安装nacos
docker pull nacos/nacos-server:v2.1.0-slim
2.2.1.创建日志文件夹、配置文件
mkdir -p /root/apply/docker/apply/nacos/logs/
mkdir -p /root/apply/docker/apply/nacos/init.d/
3.2.2.配置文件运行nacos
docker run -d \
--name nacos \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--privileged=true \
--restart=always \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.42.129 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos210 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123 \
-v /root/apply/docker/apply/nacos/logs:/home/nacos/logs \
-v /root/apply/docker/apply/nacos/init.d/custom.properties:/etc/nacos/init.d/custom.properties \
-v /root/apply/docker/apply/nacos/data:/home/nacos/data \
nacos/nacos-server:v2.1.0-slim
-e MYSQL_SERVICE_HOST=192.168.42.129 //此处是数据库地址 (数据库也在这个docker中)
-e MYSQL_SERVICE_PORT=3306 // 数据库端口
-e MYSQL_SERVICE_DB_NAME=nacos210//数据库名
-e MYSQL_SERVICE_USER=root // 数据库账号
-e MYSQL_SERVICE_PASSWORD=123 //数据库密码
5.解读
docker 启动容器
docker 启动容器
docker run \
容器名称叫nacos -d后台运行
--name nacos -d \
nacos默认端口8848 映射到外部端口8848
-p 8848:8848 \
naocs 应该是2.0版本以后就需要一下的两个端口 所以也需要开放
-p 9848:9848
-p 9849:9849
--privileged=true \
docker重启时 nacos也一并重启
--restart=always \
-e 配置 启动参数
配置 jvm
-e JVM_XMS=256m
-e JVM_XMX=256m \
单机模式
-e MODE=standalone
-e PREFER_HOST_MODE=hostname \
数据库是mysql 配置持久化 不使用nacos自带的数据库
-e SPRING_DATASOURCE_PLATFORM=mysql \
写自己的数据库地址
-e MYSQL_SERVICE_HOST=###### \
数据库端口号
-e MYSQL_SERVICE_PORT=3306 \
mysql的数据库名称
-e MYSQL_SERVICE_DB_NAME=nacos \
mysql的账号密码
-e MYSQL_SERVICE_USER=root
-e MYSQL_SERVICE_PASSWORD=root \
配置mysql时区
-e MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai \
-v 映射docker内部的文件到docker外部 我这里将nacos的日志 数据 以及配置文件 映射出来
映射日志
-v /root/apply/docker/apply/nacos/logs:/home/nacos/logs \
映射配置文件 (应该没用了 因为前面已经配置参数了)
-v /root/apply/docker/apply/nacos/init.d/custom.properties:/etc/nacos/init.d/custom.properties \
映射nacos的本地数据 也没啥用因为使用了mysql
-v /root/apply/docker/apply/nacos/data:/home/nacos/data \
启动镜像名称(指定了v2.1.0-slim这个版本)
nacos/nacos-server:v2.1.0-slim
八、安装rabbitmq
链接: https://pan.baidu.com/s/1JZccwhuxvJHticF7LWg8yw 提取码: hw7w
上传mq.tar
加载镜像
docker load -i mq.tar
运行
docker run \
-e RABBITMQ_DEFAULT_USER=cqh \
-e RABBITMQ_DEFAULT_PASS=cqh \
-v mq-plugins:/plugins \
--name mq \
--hostname mq \
-p 15672:15672 \
-p 5672:5672 \
--network es-net\
-d \
rabbitmq:3.8-management
九、安装禅道
拉取镜像
sudo docker pull hub.zentao.net/app/zentao:18.5
其他镜像版本参
https://hub.docker.com/r/easysoft/zentao/tags
创建docker网络驱动
sudo docker network create --subnet=[ip范围] [网络驱动名]
- ip范围:例如172.172.172.0/24的意思是,IP可以指定范围为172.172.172.1到172.172.172.254;
- 网络驱动名:创建的网络驱动名,可随意指定;
例如
sudo docker network create --subnet=172.172.172.0/24 zentaonet
启动禅道容器
sudo docker run \
--name [容器名] \
-p [主机端口]:80 \
--network=[网络驱动名] \
--ip [容器IP] \
--mac-address [mac地址] \
-v [主机禅道目录]:/data \
-e MYSQL_INTERNAL=true \
-d hub.zentao.net/app/zentao:[镜像标签]
参数说明:
- 容器名:启动的容器名字,可随意指定;
- 主机端口:主机端口为web访问端口;
- 网络驱动名:上文创建的网络驱动名
zentaonet
; - 容器IP:在网络驱动范围内选择一个作为该容器的固定ip;
- mac地址:指定固定的mac地址,建议范围为02:42:ac:11:00:00 到 02:42:ac:11:ff:ff;
- 主机禅道目录:必须指定,方便附件等数据的持久化;
- MYSQL_INTERNAL=true:启用容器内置MySQL,默认用户名为
root
,密码是123456
- 镜像标签:禅道版本
例如:在主机上创建空目录 /data/zentao
,执行如下命令
sudo docker run \
--name zentao \
-p 80:80 \
--network=zentaonet \
--ip 172.172.172.172 \
--mac-address 02:42:ac:11:00:00 \
-v /data/zentao:/data \
-e MYSQL_INTERNAL=true \
-d hub.zentao.net/app/zentao:18.5
sudo docker run \
--name zentao \
-p 80:80 \
--network=es-net \
--mac-address 02:42:ac:11:00:00 \
-v /data/zentao:/data \
-e MYSQL_INTERNAL=true \
-d hub.zentao.net/app/zentao:18.5
注意:
- 如果需要远程连接数据库,可以增加一个端口映射
-p [主机端口]:3306
- 如果在单个主机上部署多个禅道系统,只需要指定不同的 [容器名]、[主机端口]、[容器IP]、[mac地址]、[禅道目录]即可部署多个禅道系统,例如:
sudo docker run \
--name zentao2 \
-p 8080:80 \
-p 3306:3306 \
--network=zentaonet \
--ip 172.172.172.173 \
--mac-address 02:42:ac:11:00:01 \
-e MYSQL_INTERNAL=true \
-v /data/zentao2:/data \
-d hub.zentao.net/app/zentao:18.5
查看容器是否启动成功
执行如下命令查看容器是否启动成功,如果没有则启动失败,去掉-d选项进行前台运行调试容器,如有任何问题请咨询禅道商务同事。
# 查看禅道容器
docker ps | grep zentao
# 查看禅道容器日志
docker logs -f zentao
开始安装
后面都是无脑操作
最后 浏览器直接访问 http://宿主机ip:宿主机映射端口
升级禅道
推荐用按照此文档升级
https://www.zentao.net/book/zentaopms/586.html
1 先停止禅道容器,为备份数据做准备
# 停止禅道容器
docker stop zentao
# 删除容器
docker rm zentao
2 备份禅道数据
为安全起见,将上文所述的 [主机禅道目录] 进行备份,例如将 /data/zentao
进行拷贝至主机其他目录。
cp -rp /data/zentao /data/zentao_bak_`date +%Y%m%d`
3 拉取新版本禅道镜像
docker pull hub.zentao.net/app/zentao:[新版本]
# 如
docker pull hub.zentao.net/app/zentao:18.7
4 启禅道容器
sudo docker run \
--name zentao \
-p 80:80 \
--network=zentaonet \
--ip 172.172.172.172 \
--mac-address 02:42:ac:11:00:00 \
-v /data/zentao:/data \
-e MYSQL_INTERNAL=true \
-d hub.zentao.net/app/zentao:18.7
访问 http://你的ip:端口/ 按照提示完成升级
安装参
https://www.zentao.net/book/zentaopmshelp/405.html
十、docker安装
首先要安装一个yum工具
yum install -y yum-utils
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装 Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start
其他具体操作参考
https://blog.csdn.net/qq_67832732/article/details/138058768