難免有時候需要重新安裝系統(tǒng),每次重新安裝系統(tǒng),有些軟件需要重新安裝、配置N多軟件,飯都吃了幾頓,都沒有安裝完??梢允褂?span id="keyeciooq" class="candidate-entity-word" data-gid="1782721469276222823">docker容器的方式,進行快速搭建。如果使用虛擬機,存儲在非系統(tǒng)盤,即便重裝系統(tǒng),只需要安裝虛擬機軟件,導入虛擬機文件,即可快速啟動一個開發(fā)環(huán)境。
下面為我在虛擬機中安裝的一部分容器,2core 2G ram。
- [ghost]
- [Nginx-ui]
- [gitness(git)]
- [minio]
- [portainer]
- [elasticsearch]
- [postgres]
- [redis]
- [RabbitMQ]
- [MySQL]
Ghost – 博客平臺
首先,我們將使用Ghost搭建一個博客平臺。用來記錄筆記,存儲本地。
為了本地使用域名訪問,增加環(huán)境變量-e url=http://blog.x.cn。域名為本地局域網(wǎng)dns解析。
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。配置所有服務統(tǒng)一從nginx,nginx-ui可以通過web頁面進行配置虛擬機。
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倉庫。任何代碼都可以推到本地備份起來。
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掛載桶到目錄。對于常用的軟件、圖片、視頻、配置文件等??梢允褂肕inio進行存儲,快速存快取。
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。通過網(wǎng)頁管理Docker。
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。
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 – 關系型數(shù)據(jù)庫
為了存儲數(shù)據(jù),我們使用PostgreSQL。
docker run --name postgres -e POSTGRES_PASSWORD=000000 -p 5432:5432 -v /data/postgresql/data:/var/lib/postgresql/data -d postgres
Redis – 鍵值對存儲
我們還需要一個鍵值對存儲服務,這里選擇Redis。
docker run --name redis -p 6379:6379 -d redis:7.2.4-alpine3.19
RabbitMQ – 消息隊列
為了實現(xiàn)消息隊列功能,我們使用RabbitMQ。用戶名密碼默認都是guest。
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.13.0-management-alpine
MySQL – 關系型數(shù)據(jù)庫
除了PostgreSQL,我們也可以選擇MySQL作為關系型數(shù)據(jù)庫。
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也可以訪問。
docker run -d -p 5000:5000 -v /data/registry:/var/lib/registry --restart always --name registry registry:2
Gitness – 搭建本地Git倉庫服務
例如,我們可以使用以下命令為Gitness添加自定義域名:
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
現(xiàn)在,我們可以使用http://git.x.cn。來訪問Gitness。
這樣,我們就使用Docker快速搭建了一個開發(fā)環(huán)境,包括博客平臺、Nginx管理工具、Git倉庫管理工具、對象存儲服務等等。這些容器可以通過自定義域名進行訪問。
域名訪問,dns配置
想通過域名訪問,就得搭建本地dns服務器。dns可以使用你喜歡的任何方式進行搭建。
域名.x.cn的二級域名,就是通過本地搭建dns服務進行解析的。添加A記錄 *,到ip。然后使用nginx,把需要訪問的服務綁定到域名。需要訪問的主機的dns設置為本地dns服務器地址。
- Linux 設置dns
cat /etc/resolv.confnameserver 192.168.31.47
- Windows 通過圖形界面,在網(wǎng)絡中進行設置。
所有容器,統(tǒng)一掛載了卷,到/data/*。通過單獨分配目錄,用于持久化Docker容器需要持久化的數(shù)據(jù)掛載本地的目錄。
多臺主機需要訪問/data中的數(shù)據(jù),在擁有/data數(shù)據(jù)主機安裝配置nfs,為其他每臺主機進行掛載nfs的盤到本地目錄。即可多臺主機像服務本地文件一樣進行訪問。
我非常喜歡使用Docker來搭建和管理我的開發(fā)環(huán)境。使用Docker容器可以使我能夠快速部署和配置各種服務,而不必擔心與其他服務之間的沖突。我可以輕松地將所需的服務組合在一起,并使用Docker容器管理工具進行管理。
在這個示例中,我使用了Ghost作為博客平臺,Nginx UI作為Nginx管理工具,Gitness作為Git倉庫管理工具,Minio作為對象存儲服務,Portainer作為Docker容器管理工具,Elasticsearch作為搜索引擎,PostgreSQL和MySQL作為關系型數(shù)據(jù)庫,Redis作為鍵值對存儲,RabbitMQ作為消息隊列,以及Docker Registry作為Docker鏡像倉庫。
通過使用這些工具,我可以在本地搭建一個完整的開發(fā)環(huán)境,并輕松地進行開發(fā)、部署和管理各種應用程序。我可以使用自定義的域名來訪問這些服務,以便更方便地進行開發(fā)和測試。
總而言之,使用Docker可以極大地簡化開發(fā)環(huán)境的搭建和管理過程,使我能夠更專注于開發(fā)工作而不必擔心底層的配置和沖突。這大大提高了我的工作效率,并使我能夠更好地管理我的項目。作為一個程序員,我強烈推薦使用Docker來構建和管理開發(fā)環(huán)境。
版權聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實,本站將立刻刪除。