使用 Docker 快速搭建基础设施

概述

通过 Docker 我们可以方便的在本地搭建一些技术设施,以较低的成本提升我们的开发效率。

MySQL

通过以下命令可以快速启动一个 MySQL 8 实例且已设置了中国时区和 UTF-8 字符集:

docker run --name mysql -d -e TZ="Asia/Shanghai" -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -e MYSQL_ROOT_PASSWORD= -p 3306:3306 mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

启动后,可通过 127.0.0.1 和 3306 端口访问 MySQL,用户名为 “root”,密码为“”(空)。

如果需要配置密码,对应的命令如下:

docker run --name mysql -d -e TZ="Asia/Shanghai" -e MYSQL_ROOT_PASSWORD=<你的密码> -p 3306:3306 mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

Redis

通过以下命令可以快速启动一个单机模式、不含密码的 Redis 7 服务:

docker run --name redis -d -p 6379:6379 redis

可以使用 redis-cli info 命令检查其运行状况:

docker exec -it redis redis-cli info

如果需要密码保护,对应的命令如下(配置 REDISCLI_AUTH 环境变量使得在用 redis-cli 进行交互时无需输入密码):

docker run --name redis -d -e REDISCLI_AUTH=<你的密码> -p 6379:6379 redis --requirepass <你的密码>

若未通过 REDISCLI_AUTH 环境变量注入密码,可使用 -a 参数传入(不推荐,亦会输出 Warning):

docker exec -it redis redis-cli -a <你的密码> info

单节点集群

通过以下命令可以快速启动一个单节点集群模式、不含密码的 Redis 7 服务:

docker run --name redis -d -p 6379:6379 redis --cluster-enabled yes

容器启动后,通过以下命令初始化 slot(执行时还需要输入“yes”进行确认):

docker exec -it redis redis-cli --cluster fix 127.0.0.1:6379

可以使用 redis-cli info 命令检查其运行状况:

docker exec -it redis redis-cli --cluster info 127.0.0.1:6379

MinIO(对象存储)

通过以下命令可以快速启动一个 MinIO(对象存储)服务(含管理后台):

docker run --name minio -d -p 9000:9000 -p 9001:9001 minio/minio server /data --console-address ":9001"

启动后,可通过 http://127.0.0.1:9000 访问对象存储服务; http://127.0.0.1:9001 访问管理页面,默认用户名和密码为 “minioadmin/minioadmin”。

如果需要配置用户名和密码(两者必须同时配置),对应的命令如下:

docker run --name minio -d -e MINIO_ROOT_USER=<你的用户名> -e MINIO_ROOT_PASSWORD=<你的密码> -p 9000:9000 -p 9001:9001 minio/minio server /data --console-address ":9001"

注意,MinIO 容器并不会自带Bucket,需要通过管理页面登录后创建方可使用。

RabbitMQ(消息队列)

通过以下命令可以快速启动一个单机模式 RabbitMQ(消息队列)服务(含管理后台):

docker run --name rabbitmq --hostname rabbitmq -d -p 5672:5672 -p 15672:15672 rabbitmq:management-alpine

启动后,可通过 amqp://127.0.0.1:5672 访问对象存储服务; http://127.0.0.1:15672 访问管理页面,默认用户名和密码为 “guest/guest”,默认的 Virtual-Host 为“/”(斜杠)。

如果需要配置用户名和密码(支持仅配置其中一个),对应的命令如下:

docker run --name rabbitmq --hostname rabbitmq -d -e RABBITMQ_DEFAULT_USER=<你的用户名> -e RABBITMQ_DEFAULT_PASS=<你的密码> -p 5672:5672 -p 15672:15672 rabbitmq:management-alpine

MailHog(虚拟邮箱服务)

通过以下命令可以快速启动一个 MailHog(虚拟邮箱服务),可以用来模拟发送邮件(对代码而言是真的发出去了,实际上会被 MailHog 接管并显示在管理后台中,不会真实发送:

docker run --name mailhog -d -p 1025:1025 -p 8025:8025 mailhog/mailhog

启动后,可通过 smtp://127.0.0.1:1025 进行 SMTP 邮件发送; http://127.0.0.1:8025 访问管理页面,无需密码即可使用。