如果你是软件开发者,你肯定知道这种情况:项目需要什么工具,我们就安装什么工具。但问题是:很多这些工具其实用得不多。可能我一个月需要用RabbitMQ做项目,接着它就被闲置了,直到下一次我再需要它。或者我正在跟着一个教程,而那个教程用了PostgreSQL这样的数据库,我平时很少用。
现在呢,如果所有这些工具都直接安装在我的笔记本电脑上,它们会开始占用大量资源,即使我不使用它们,电脑也会变慢。很烦人的是,我的笔记本电脑因为我后台运行了一些我根本用不上的服务而变得卡顿。
走进 Docker:我的随需应变工具箱
为此,我开始使用Docker来运行那些不需要一直开启的工具。在需要的时候,我可以快速启动一个工具,用完后就可以轻松关闭。真是太方便了,效率也提高了很多!
我也为我常用的工具设置了一些Docker Compose文件,比如需要使用RabbitMQ或MongoDB时,我只需输入docker compose up
,然后工具就运行起来了。完成工作后,只需停止容器。甚至可以删掉镜像,如果不需要的话。干净利索。
常见工具的 Docker Compose 文件:
这里是我整理好的一些流行工具的Docker Compose文件。只需为特定工具新建一个文件夹,例如 rabbitmq
。然后在该文件夹中创建一个 docker-compose.yaml
文件。要用的话,只需进入该目录,然后运行 docker compose up
。如果完成任务,只需按 Ctrl + C
来停止容器运行。如果你希望保持开发环境整洁,随便用吧!
……
1. RabbitMQ (一个开源的消息队列软件)
备注:
使用 guest:guest
登录 GUI,其中 guest:guest
是用户名和密码。
services:
rabbitmq:
image: rabbitmq:3-management
container_name: rabbitmq
ports:
- 5672:5672 # 用于发送者和接收者的连接
- 15672:15672 # 用于访问 RabbitMQ GUI
volumes:
- ${HOME}/Dev/docker/rabbitmq/data/:/var/lib/rabbitmq
- ${HOME}/Dev/docker/rabbitmq/log/:/var/log/rabbitmq
networks:
- rabbitmq-network
networks:
rabbitmq-network:
driver: bridge
进入全屏 退出全屏
2. MongoDB 数据库
services:
mongodb:
container_name: mongodb
image: mongo:latest
ports:
- 27017:27017
volumes:
- ${HOME}/Development/docker/mongodb/data/:/data/db
environment:
MONGO_INITDB_ROOT_USERNAME: your_username
MONGO_INITDB_ROOT_PASSWORD: your_password
networks:
- mongodb-network
networks:
mongodb-network:
driver: bridge
进入全屏模式,退出全屏模式
3. PostgreSQL
备注:
- 在
pgadmin
的 GUI 中,请将host.docker.internal
作为主机使用。 - 如果需要的话,可以卸载
pgadmin
。
services:
postgres:
image: postgres
container_name: postgres
environment:
POSTGRES_PASSWORD: your_password
volumes:
- ${HOME}/Development/docker/postgresql/postgres/data/:/var/lib/postgresql/data
ports:
- 5432:5432
networks:
- postgres-network
pgadmin:
image: dpage/pgadmin4
container_name: pgadmin
depends_on:
postgres:
condition: service_completed_successfully
ports:
- 8888:80
environment:
PGADMIN_DEFAULT_EMAIL: your_email@gmail.com
PGADMIN_DEFAULT_PASSWORD: your_password
volumes:
- ${HOME}/Development/docker/postgresql/pgadmin/data/:/var/lib/pgadmin
networks:
- postgres-network
networks:
postgres-network:
driver: bridge
全屏模式 退出全屏
4. MySQL数据库管理系统
备注:
- 如果你想,可以卸载
phpmyadmin
。 - 在
phpmyadmin
的图形界面中,请将服务器设为host.docker.internal
。
services:
mysql:
image: mysql:latest
container_name: mysql
environment:
MYSQL_ROOT_PASSWORD: your_password
volumes:
- ${HOME}/Development/docker/mysql/data/:/var/lib/mysql
ports:
- 3306:3306
networks:
- mysql-network
# MySQL服务配置
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
container_name: phpmyadmin
depends_on:
mysql:
condition: service_completed_successfully # 服务成功完成
environment:
MYSQL_ROOT_PASSWORD: your_password
PMA_HOST: mysql
PMA_PORT: 3307
PMA_ARBITRARY: 1 # 数据库管理界面连接的主机和端口
ports:
- 8080:80
networks:
- mysql-network
# phpMyAdmin服务配置
networks:
mysql-network:
driver: bridge # 驱动: 桥接
切换到全屏模式,然后退出全屏模式
5. Redis (一个开源的内存数据存储系统)
备注:
- 在
redisinsight
的 GUI 中,请使用host.docker.internal
作为主机名。 - 如果你想要,可以移除
redisinsight
。
services:
redis:
image: redis:latest
container_name: redis
volumes:
- ${HOME}/Development/docker/redis/redis/data/:/data
ports:
- 6379:6379
networks:
- redis-network
entrypoint: redis-server --appendonly yes --requirepass granite97 # 启动Redis服务器,启用持久化,设置密码
redisinsight:
image: redis/redisinsight:latest
container_name: redisinsight
depends_on:
redis:
condition: service_completed_successfully # 条件:服务成功完成
volumes:
- ${HOME}/Development/docker/redis/redisinsight/data/:/data
ports:
- 5540:5540
networks:
- redis-network
networks:
redis-network:
driver: bridge # 驱动:桥接
全屏模式 退出全屏
6. SonarQube,静态代码分析工具
services:
sonarqube:
image: sonarqube:community
container_name: sonarqube
environment:
SONAR_ES_BOOTSTRAP_CHECKS_DISABLE: true
volumes:
- ${HOME}/Development/docker/sonarqube/data/:/opt/sonarqube/data
- ${HOME}/Development/docker/sonarqube/extensions/:/opt/sonarqube/extensions
- ${HOME}/Development/docker/sonarqube/logs/:/opt/sonarqube/logs
ports:
- 9000:9000
networks:
- sonarqube-network
networks:
# 创建一个名为 sonarqube-network 的 Docker 网络。
sonarqube-network:
driver: bridge
进入全屏, 退出全屏
结尾
使用 Docker 运行这些工具让我的生活轻松多了。现在,我不再需要在我的机器上安装那些偶尔才用到的东西,而是根据需要启动它们。再也没有那些不必要的后台进程,开发环境也不再杂乱。
所以如果你的机器因为安装了太多的工具感觉很吃力,可以试试这个Docker技巧。希望这些Docker Compose文件能帮助你让设置更轻量、更快。祝你好运!
备注
- 请将路径更改为您的期望路径。在我的情况下,每个工具的路径将位于
/Users/granitebps/Development/docker/{tools_folder}/
。如果您希望保持原样,也可以不用更改。只需确保您的$HOME
文件夹中存在Development/docker
文件夹。 - 如果您希望从其他 Docker 容器连接到服务,请将
localhost
或127.0.0.1
更改为host.docker.internal
。您不能从 Docker 容器访问主机的localhost
,所以请将localhost
更改为host.docker.internal
以便容器可以访问主机的localhost
。 - 如果希望使用每个工具的轻量级版本,您可以在镜像名称后面加上
alpine
。请确认 Docker Hub 上有该镜像的alpine
版本。另外,请注意alpine
版本的功能比普通版本要少一些。
共同学习,写下你的评论
评论加载中...
作者其他优质文章