Docker 一键部署指南:GitLab、Nacos、Redis、MySQL 与 MinIO 全解析

Docker 一键部署指南:GitLab、Nacos、Redis、MySQL 与 MinIO 全解析

文章目录

  • [Docker 一键部署指南:GitLab、Nacos、Redis、MySQL 与 MinIO 全解析](#Docker 一键部署指南:GitLab、Nacos、Redis、MySQL 与 MinIO 全解析)
  • 一、文章简介
  • 二、镜像选择
  • [三、docker 通用参数介绍](#三、docker 通用参数介绍)
  • [四、docker 启动 gitlab-ce](#四、docker 启动 gitlab-ce)
  • [五、docker 启动 nacos](#五、docker 启动 nacos)
  • [六、docker 启动 redis](#六、docker 启动 redis)
  • [七、docker 启动 mysql](#七、docker 启动 mysql)
  • [八、docker 启动 minio](#八、docker 启动 minio)

一、文章简介

本篇文章用于介绍 gitlab-ce、nacos、redis、mysql、minio 服务的 docker 启动命令行

(ps:本来不想再写 docker 启动命令行,但之前有位读者想要 docker 启动 gitlab-ce ,又因为一个服务的启动命令行实在没什么可写,所以将最近用到的几个服务写在一起)

二、镜像选择

我使用的 docker 镜像都来自 Docker hub,请需要的朋友自行查阅。

三、docker 通用参数介绍

  • -d:表示后台运行容器
  • -p:端口映射,格式:宿主机端口:容器内端口
  • -v:用于目录挂载,实现数据持久化,格式:宿主机目录:容器目录
  • -e:设置环境变量
  • --name:用于指定容器名称

四、docker 启动 gitlab-ce

bash 复制代码
docker run  \
-d \
-p 180:80 \
-p 1443:443 \
-p 122:22 \
-v "$HOME/docker/gitlab/config:/etc/gitlab" \
-v "$HOME/docker/gitlab/logs:/var/log/gitlab" \
-v "$HOME/docker/gitlab/data:/var/opt/gitlab" \
--hostname 127.0.0.1 \
--name gitlab \
gitlab/gitlab-ce:latest

1、启动 gitlab-ce 需要注意 gitlab-ce 所需的三个端口

  • 80、443 端口是用于 http(s) 协议,22 端口用于 ssh 协议
  • http(s) 协议用于 web 控制台和拉取代码库的 http(s) 路径
  • ssh 协议用于拉取代码库的 git 路径
  • 由于启动容器时将三个端口映射至其他端口,所以访问 web 页面、拉取代码时要指定端口
  • http(s) 协议比较好理解,略过,这里我贴一下 ssh 协议端口指定和未指定的样式
  • 从 gitlab 页面复制的链接样式
bash 复制代码
git clone git@127.0.0.1:root/test.git
  • 指定端口后的 ssh 链接样式
bash 复制代码
git clone ssh://git@127.0.0.1:122/root/test.git

2、-v 参数是将容器内的目录挂载出来,用于实现 gitlab 数据持久化,格式:宿主机目录:容器目录

  • 容器启动后会在 "$HOME/docker/gitlab/config:/etc/gitlab" 目录下生成配置文件,其中 initial_root_password 文件内会生成 root 用户的初始密码
  • 容器启动后会在每个挂载出来的目录下生成很多文件,可据此确认挂载是否成功。

ps:一定要确定目录是否挂载成功,数据持久化是否成功,避免数据丢失。

3、hostname 参数

  • 此处指定的 hostname 会用在访问仓库链接上,运行容器时未指定可以删除容器重新指定、启动,域名或地址会自动更改

五、docker 启动 nacos

bash 复制代码
docker run \
  -d \
  -p 18080:8080 \
  -p 18848:8848 \
  -p 19848:9848 \
  -e MODE=standalone \
  -e SPRING_DATASOURCE_PLATFORM=mysql \
  -e MYSQL_SERVICE_HOST=host.docker.internal \
  -e MYSQL_SERVICE_PORT=3306 \
  -e MYSQL_SERVICE_DB_NAME=nacos \
  -e MYSQL_SERVICE_USER=root \
  -e MYSQL_SERVICE_PASSWORD=password \
  -e MYSQL_DATABASE_NUM=1 \
  -e NACOS_AUTH_ENABLE=true \
  -e NACOS_AUTH_IDENTITY_KEY=nacos \
  -e NACOS_AUTH_IDENTITY_VALUE=nacos \
  -e NACOS_AUTH_TOKEN=ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMQ== \
  --name nacos \
  nacos/nacos-server:latest

关于 nacos 的端口映射不做介绍,感兴趣的朋友可以自行查阅 nacos 相关信息

环境变量介绍

  • -e MODE=standalone:表示但节点运行 nacos
  • SPRING_DATASOURCE_PLATFORM=mysql:指定用于数据存储的数据库类型为 mysql
  • MYSQL_SERVICE_HOST=host.docker.internal:指定数据库域名或ip,此处使用 host.docker.internal 是我想连接宿主机部署的 mysql,该参数好像只在 mac 版本的 docker-desktop 中有用。
  • MYSQL_SERVICE_PORT=3306:指定 mysql 端口
  • MYSQL_SERVICE_DB_NAME=nacos:指定数据库名称
  • MYSQL_SERVICE_USER=root:数据库连接用户
  • MYSQL_SERVICE_PASSWORD=password:数据库连接密码
  • MYSQL_DATABASE_NUM=1:指定数据库数量为1
  • NACOS_AUTH_ENABLE=true:开启Nacos的认证功能
  • NACOS_AUTH_IDENTITY_KEY=nacos:控制台登陆用户名
  • NACOS_AUTH_IDENTITY_VALUE=nacos:控制台登陆密码
  • NACOS_AUTH_TOKEN=ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMQ==:认证中使用的 JWT 令牌密钥。备注:此处的 token 不可泄露

ps:初次启动 nacos 后,数据库中会自动创建很多表,可据此确认数据持久化是否成功,避免数据丢失。

六、docker 启动 redis

bash 复制代码
docker run \
-d \
-p 6379:6379 \
-v "$HOME/docker/redis/redis.conf:/etc/redis/redis.conf" \
-v "$HOME/docker/redis/data:/data" \
--name redis \
redis:latest \
redis-server /etc/redis/redis.conf

1、redis 配置登陆密码、绑定 ip 时可以挂载配置文件,然后在命令行最后写redis-server /etc/redis/redis.conf指定 redis 启动时的配置文件位置

下面给出一个配置文件的简单示例

yaml 复制代码
# Redis配置文件

# Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程
# daemonize no

# 指定Redis监听端口,默认端口为6379
# port 6379

# 绑定的主机地址,不要绑定容器的本地127.0.0.1地址,因为这样就无法在容器外部访问
bind 0.0.0.0

#需要密码则打开
requirepass password

# 持久化
appendonly yes

2、-v "$HOME/docker/redis/data:/data":挂载 redis 的数据存储目录

备注:由于 redis 一般用于存储缓存数据,容器删除重建问题也不大,所以测试环境中数据存储目录可以不用挂载。如果懒得设置 redis 密码,配置文件也可以不用挂载。

七、docker 启动 mysql

bash 复制代码
docker run \
-d \
-p 13306:3306 \
-v "$HOME/docker/mysql/log:/var/log/mysql" \
-v "$HOME/docker/mysql/data:/var/lib/mysql" \
-e MYSQL_ROOT_PASSWORD=password \
--name mysql \
mysql:latest
  1. mysql 启动要注意数据存储目录的挂载,$HOME/docker/mysql/data:/var/lib/mysql这个千万不要漏了,当mysql 启动后对应目录下会生成很多初始化文件,可以确认挂载是否成功。
  2. "$`HOME/docker/mysql/data:/var/lib/mysql":用于挂在日志文件
  3. -e MYSQL_ROOT_PASSWORD=password:指定 mysql 初始密码

八、docker 启动 minio

bash 复制代码
docker run \
-d \
-p 9090:9090 \
-p 9000:9000 \
-e "MINIO_ACCESS_KEY=root" \
-e "MINIO_SECRET_KEY=password" \
-v "$HOME/docker/minio/data:/data" \
--name minio \
minio/minio:RELEASE.2025-04-22T22-12-26Z \
server /data --console-address ":9090" -address ":9000"

minio 是一个提供对象存储的服务,个人感觉比较鸡肋,建议有条件的朋友使用各大厂商提供的对象存储服务,省心。

  • 9090:该端口是 minio web 控制台的端口,浏览器访问时要指定端口
  • 9000:该端口是 API 服务端口,服务内存储的文件可以用ip + 9000 + bucket + 文件路径访问
  • "MINIO_ACCESS_KEY=root":指定用户名
  • "MINIO_SECRET_KEY=password":指定密码
  • "$HOME/docker/minio/data:/data":挂载数据文件
  • server /data --console-address ":9090" -address ":9000"
    用于指定容器内 minio 服务控制台、api服务的端口地址

ps:数据文件一定要挂载,且需要创建 bucket、上传文件进行测试目录是否挂载成功,避免数据丢失,成功的会在该目录下看到对应的 bucket

ps:minio 服务自minio/minio:RELEASE.2025-04-22T22-12-26Z版本后删除了 web 控制台中关于 bucket 的授权策略功能。

相关推荐
Hover_Z_快跑1 小时前
Docker 部署 Elasticsearch 8.12 + Kibana + Nginx 负载均衡
nginx·elasticsearch·docker
爱宇阳2 小时前
Vue3 前端项目 Docker 容器化部署教程
前端·docker·容器
帅帅梓2 小时前
docker 资源限制
运维·docker·容器
LB21123 小时前
Redis黑马点评 Feed流
数据库·redis·缓存
可乐大数据4 小时前
Docker安装(基于云服务器ECS实例 CentOS 7.9系统)
服务器·docker·centos
姓蔡小朋友4 小时前
SpringDataRedis
java·开发语言·redis
苦学编程的谢5 小时前
Redis_5_单线程模型
数据库·redis·缓存
一只大耗子。6 小时前
Mac M系列芯片制作Oracle19镜像使用docker-compose运行
docker·docker-compose·mac·oracle19c
梁正雄6 小时前
18、docker-macvlan-2-示例
运维·docker·容器·macvlan
梁正雄6 小时前
17、docker-macvlan-1-理论
运维·docker·macvlan·docker macvlan