使用Docker快速搭建自己的开发环境

难免有时候需要重新安装系统,每次重新安装系统,有些软件需要重新安装、配置N多软件,饭都吃了几顿,都没有安装完。可以使用Docker容器的方式,进行快速搭建。如果使用虚拟机,存储在非系统盘,即便重装系统,只需要安装虚拟机软件,导入虚拟机文件,即可快速启动一个开发环境。

下面为我在虚拟机中安装的一部分容器,2core 2G ram。

  • ghost

  • nginx-ui

  • gitness(Git)

  • minio

  • portainer

  • elasticsearch

  • postgres

  • redis

  • rabbitmq

  • mysql

Ghost - 博客平台

首先,我们将使用Ghost搭建一个博客平台。用来记录笔记,存储本地。

为了本地使用域名访问,增加环境变量-e url=http://blog.x.cn。域名为本地局域网dns解析。

ini 复制代码
docker run -d \
--name ghost \
-e NODE_ENV=development \
-e database__connection__filename='/var/lib/ghost/content/data/ghost.db' \
-e url=http://blog.x.cn \
--restart always \
-p 3001:2368 \
ghost:alpine

Nginx UI - Nginx管理工具

接下来,我们使用Nginx UI来管理Nginx。配置所有服务统一从nginx,nginx-ui可以通过web页面进行配置虚拟机。

bash 复制代码
docker run -dit \
--name=nginx-ui \
--restart=always \
-e TZ=Asia/Shanghai \
-v /data/nginx/nginx:/etc/nginx \
-v /data/nginx/nginx-ui:/etc/nginx-ui \
-v /data/nginx/root/html:/root/html \
-v /data/nginx/root/cert:/root/cert \
-p 80:80 -p 443:443 \
uozi/nginx-ui:latest

Gitness - Git仓库管理工具

为了方便管理代码仓库,我们使用Gitness。本地git仓库。任何代码都可以推到本地备份起来。

bash 复制代码
docker run -d \
-p 3000:3000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /data/gitness:/data \
--name gitness \
--restart always \
harness/gitness

Minio - 对象存储服务

我们还需要一个对象存储服务,这里选择Minio。Windows可以使用rclone挂载桶到目录。对于常用的软件、图片、视频、配置文件等。可以使用Minio进行存储,快速存快取。

bash 复制代码
docker run -d --name minio \
--publish 9000:9000 \
--publish 9001:9001 \
--env MINIO_ROOT_USER="minioadmin" \
--env MINIO_ROOT_PASSWORD="minioadmin" \
--volume /data:/data \
--restart always \
bitnami/minio:latest

Portainer - Docker容器管理工具

为了方便管理Docker容器,我们使用Portainer。通过网页管理Docker。

bash 复制代码
docker run -d -p 9010:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /data/portainer:/data \
--restart=always \
--name portainer \
portainer/portainer-ce:latest

Elasticsearch - 搜索引擎

我们还需要一个搜索引擎,这里选择Elasticsearch。

bash 复制代码
docker run -d --name=elasticsearch \
-p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-v /data/es:/usr/share/elasticsearch/data \
-v /data/es/plugins:/usr/share/elasticsearch/plugins \
elasticsearch:7.5.2

PostgreSQL - 关系型数据库

为了存储数据,我们使用PostgreSQL。

diff 复制代码
docker run --name postgres \
-e POSTGRES_PASSWORD=000000 \
-p 5432:5432 \
-v /data/postgresql/data:/var/lib/postgresql/data \
-d postgres

Redis - 键值对存储

我们还需要一个键值对存储服务,这里选择Redis。

css 复制代码
docker run --name redis -p 6379:6379 -d redis:7.2.4-alpine3.19

RabbitMQ - 消息队列

为了实现消息队列功能,我们使用RabbitMQ。用户名密码默认都是guest。

css 复制代码
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.13.0-management-alpine

MySQL - 关系型数据库

除了PostgreSQL,我们也可以选择MySQL作为关系型数据库。

diff 复制代码
docker run --name my-mysql \
-e MYSQL_ROOT_PASSWORD=000000 \
-p 3306:3306 \
-v /data/mysql/data:/var/lib/mysql \
-d mysql

Docker Registry - Docker镜像仓库

最后,我们可以搭建一个私有的Docker镜像仓库。如果通过域名访问,需要https,之后,通过反向代理http也可以访问。

diff 复制代码
docker run -d -p 5000:5000 \
-v /data/registry:/var/lib/registry \
--restart always \
--name registry \
registry:2

Gitness - 搭建本地Git仓库服务

例如,我们可以使用以下命令为Gitness添加自定义域名:

arduino 复制代码
docker run -d \
-p 3000:3000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /data/gitness:/data \
-e GITNESS_URL_BASE=http://git.x.cn \
--name gitness-domain \
--restart always \
harness/gitness

现在,我们可以使用git.x.cn。来访问Gitness。

这样,我们就使用Docker快速搭建了一个开发环境,包括博客平台、Nginx管理工具、Git仓库管理工具、对象存储服务等等。这些容器可以通过自定义域名进行访问。

域名访问,dns配置

想通过域名访问,就得搭建本地dns服务器。dns可以使用你喜欢的任何方式进行搭建。

域名*.x.cn的二级域名,就是通过本地搭建dns服务进行解析的。添加A记录* *,到ip。然后使用nginx,把需要访问的服务绑定到域名。需要访问的主机的dns设置为本地dns服务器地址。

  • Linux 设置dns

    cat /etc/resolv.conf nameserver 192.168.31.47

  • Windows 通过图形界面,在网络中进行设置。

所有容器,统一挂载了卷,到/data/*。通过单独分配目录,用于持久化docker容器需要持久化的数据挂载本地的目录。

多台主机需要访问/data中的数据,在拥有/data数据主机安装配置nfs,为其他每台主机进行挂载nfs的盘到本地目录。即可多台主机像服务本地文件一样进行访问。

我非常喜欢使用Docker来搭建和管理我的开发环境。使用Docker容器可以使我能够快速部署和配置各种服务,而不必担心与其他服务之间的冲突。我可以轻松地将所需的服务组合在一起,并使用Docker容器管理工具进行管理。

在这个示例中,我使用了Ghost作为博客平台,Nginx UI作为Nginx管理工具,Gitness作为Git仓库管理工具,Minio作为对象存储服务,Portainer作为Docker容器管理工具,Elasticsearch作为搜索引擎,PostgreSQL和MySQL作为关系型数据库,Redis作为键值对存储,RabbitMQ作为消息队列,以及Docker Registry作为Docker镜像仓库。

通过使用这些工具,我可以在本地搭建一个完整的开发环境,并轻松地进行开发、部署和管理各种应用程序。我可以使用自定义的域名来访问这些服务,以便更方便地进行开发和测试。

总而言之,使用Docker可以极大地简化开发环境的搭建和管理过程,使我能够更专注于开发工作而不必担心底层的配置和冲突。这大大提高了我的工作效率,并使我能够更好地管理我的项目。作为一个程序员,我强烈推荐使用Docker来构建和管理开发环境。

相关推荐
THMAIL4 小时前
mac M芯片运行docker-desktop异常问题
macos·docker·容器
两点王爷5 小时前
IDEA中springboot项目中连接docker
spring boot·docker·intellij-idea
家庭云计算专家6 小时前
还没用过智能文档编辑器吗?带有AI插件的ONLYOFFICE介绍
服务器·人工智能·docker·容器·编辑器
孤的心了不冷8 小时前
【Docker】CentOS 8.2 安装Docker教程
linux·运维·docker·容器·eureka·centos
头疼的程序员9 小时前
docker学习与使用(概念、镜像、容器、数据卷、dockerfile等)
学习·docker·容器
IT小郭.9 小时前
使用 Docker Desktop 安装 Neo4j 知识图谱
windows·python·sql·docker·知识图谱·database·neo4j
淡水猫.9 小时前
hbit资产收集工具Docker(笔记版)
运维·docker·容器
旧故新长18 小时前
访问 Docker 官方镜像源(包括代理)全部被“重置连接”或超时
运维·docker·容器
white.tie18 小时前
Docker部署单节点Elasticsearch
elasticsearch·docker·jenkins
haven-8521 天前
win11安装Joplin Server私有化部署(docker)
运维·docker·容器