为了账号安全,请及时绑定邮箱和手机立即绑定

用Docker保持开发机器的干净整洁

如果你是软件开发者,你肯定知道这种情况:项目需要什么工具,我们就安装什么工具。但问题是:很多这些工具其实用得不多。可能我一个月需要用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 容器连接到服务,请将 localhost127.0.0.1 更改为 host.docker.internal。您不能从 Docker 容器访问主机的 localhost,所以请将 localhost 更改为 host.docker.internal 以便容器可以访问主机的 localhost
  • 如果希望使用每个工具的轻量级版本,您可以在镜像名称后面加上 alpine。请确认 Docker Hub 上有该镜像的 alpine 版本。另外,请注意 alpine 版本的功能比普通版本要少一些。
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消