使用 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 访问管理页面,无需密码即可使用。