使用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来构建和管理开发环境。

相关推荐
追风林2 小时前
mac 本地docker-mysql主从复制部署
mysql·macos·docker
城南vision4 小时前
Docker学习—Docker核心概念总结
java·学习·docker
wclass-zhengge4 小时前
Docker篇(Docker Compose)
运维·docker·容器
梦魇梦狸º8 小时前
腾讯轻量云服务器docker拉取不到镜像的问题:拉取超时
docker·容器·github
鬼才血脉8 小时前
docker+mysql配置
mysql·adb·docker
詹姆斯爱研究Java8 小时前
Docker 的基本概念和优势
docker
南猿北者10 小时前
docker镜像仓库常用命令
运维·docker·容器
杨浦老苏10 小时前
Docker可视化管理面板DPanel的安装
运维·docker·群晖
航月12 小时前
FTP、ISCSI、CHRONY、DNS、NFS、DOCKER、MARIADB、NGINX、PHP、CA各服务开启方法
nginx·docker·mariadb
微刻时光12 小时前
Docker镜像分成
java·运维·开发语言·docker·容器·镜像