使用docker compose一鍵部署多個(gè)服務(wù)的方法
docker compose 是 docker 官方的開源項(xiàng)目,用來實(shí)現(xiàn)對 docker 容器集群的快速編排
下載安裝
官網(wǎng)下載地址:點(diǎn)這里
我用的是云服務(wù)器,所以就直接用yum安裝了,直接執(zhí)行這兩條命令,等安裝結(jié)束后查看版本,看到版本號表示安裝成功


下面還有一種手動安裝的方式,因?yàn)槭窃L問的github,我的服務(wù)器一直訪問失敗,就只能用上面那種方式了

不使用 compose 部署項(xiàng)目
我這里用一個(gè)springboot項(xiàng)目來測試,只寫了一個(gè)接口,訪問redis和mysql
編寫dockerfile來構(gòu)建鏡像
FROM java:8 MAINTAINER vhukze # 指定臨時(shí)文件夾為/tmp VOLUME /tmp # 將jar包添加到容器中重命名為my-docker.jar ADD docker-test.jar my-docker.jar # 運(yùn)行jar包 RUN bash -c 'touch /my-docker.jar' ENTRYPOINT ["java","-jar","/my-docker.jar"] # 暴露8888端口 EXPOSE 8888
把項(xiàng)目的jar包和Dockerfile文件上傳到服務(wù)器,我這里放到了/mydocker路徑下

使用命令構(gòu)建鏡像(注意最后的點(diǎn),表示Dockerfile文件在當(dāng)前目錄下)
docker build -t my-docker:1.0 .
稍等一會兒之后,構(gòu)建成功,查看鏡像

這里代碼訪問的redis和mysql同樣是docker中啟動的

使用my-docker鏡像啟動一個(gè)容器
docker run -d -p 8888:8888 my-docker:1.0
不使用compose,需要單獨(dú)啟動三個(gè)容器,執(zhí)行三遍docker run
使用 compose 部署項(xiàng)目
編寫docker-compose.yml文件,并上傳到服務(wù)器的/mydocker 路徑下
version: "3"
# 多個(gè)服務(wù)
services:
# my-docker服務(wù)
myDockerService:
# 鏡像名稱和版本
image: my-docker:1.0
# 啟動的容器名稱
container_name: my-docker
# 端口
ports:
- 8888:8888
# 容器數(shù)據(jù)卷
volumes:
- /app/myDocker:/data
# 網(wǎng)絡(luò)模式 (最下方自定義的一個(gè)網(wǎng)絡(luò)模式)
networks:
- my_net
# 依賴的服務(wù)(表示需要依賴的服務(wù)先啟動)
depends_on:
- redis
- mysql
# redis 服務(wù)
redis:
image: redis
ports:
- 6666:6379
volumes:
- /app/redis/redis.conf:/etc/redis/redis.conf
- /app/redis/data:/data
networks:
- my_net
# 啟動命令
command: redis-server /etc/redis/redis.conf
# mysql服務(wù)
mysql:
image: mysql:5.7
# mysql 相關(guān)配置
environment:
MYSQL_ROOT_PASSWORD: '123456'
MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
MYSQL_DATABASE: 'testdb'
MYSQL_USER: 'vhukze'
MYSQL_PASSWORD: 'vhukze'
ports:
- 3306:3306
volumes:
- /app/mysql/db:/var/lib/mysql
- /app/mysql/conf/my.cnf:/etc/my.cnf
- /app/mysql/init:/docker-entrypoint-initdb.d
networks:
- my_net
# 解決外部無法訪問問題
command: --default-authentication-plugin=mysql_native_password
# 創(chuàng)建自定義網(wǎng)絡(luò)模式
networks:
my_net: 使用同一個(gè)自定義網(wǎng)絡(luò)模式,互相之間可以通過服務(wù)名稱訪問,修改項(xiàng)目配置文件,把redis和mysql的ip改為服務(wù)名稱(注意這里redis的端口要改成容器內(nèi)使用的端口,因?yàn)槭侨萜髦g互相訪問,不會走宿主機(jī)的端口)

再次打包項(xiàng)目上傳到服務(wù)器,使用Dockerfile構(gòu)建鏡像
在docker-compose.yml所在目錄執(zhí)行下面命令,檢查語法是否有誤
執(zhí)行之后沒有任何輸出,表示語法沒有問題
docker compose config -q
使用docker-compose啟動三個(gè)容器
在docker-compose.yml所在目錄執(zhí)行下面命令
docker compose up -d
可以看到網(wǎng)絡(luò)模式和三個(gè)容器都創(chuàng)建完成了


使用瀏覽器訪問my-docker項(xiàng)目的接口,訪問成功

一鍵停止并刪除
docker compose down
一鍵停止
docker compose stop
一鍵啟動
docker compose start
一鍵重啟
docker compose restart
結(jié)論是 通過docker-compose可以一鍵創(chuàng)建和刪除多個(gè)容器
到此這篇關(guān)于使用docker compose一鍵部署多個(gè)服務(wù)的文章就介紹到這了,更多相關(guān)docker compose多個(gè)服務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker連接spring boot和mysql容器方法介紹
這篇文章主要介紹了docker連接spring boot和mysql容器方法介紹,具有一定參考價(jià)值,需要的朋友可以了解下。2017-10-10
docker配置修改阿里云鏡像倉庫的實(shí)現(xiàn)
這篇文章主要介紹了docker配置修改阿里云鏡像倉庫的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
Docker Compose搭建Redis主從復(fù)制環(huán)境的實(shí)現(xiàn)步驟
在Docker中搭建Redis主從架構(gòu)非常方便,下面是一個(gè)示例,演示如何使用Docker Compose設(shè)置一個(gè)Redis主從復(fù)制環(huán)境,文中有詳細(xì)的代碼示例,具有一定的參考價(jià)值,需要的朋友可以參考下2023-09-09
Docker從0到1實(shí)現(xiàn)項(xiàng)目編排部署
Docker編排是管理和協(xié)調(diào)多個(gè)Docker容器的工具和技術(shù),目的是簡化容器的部署、擴(kuò)展和管理流程,本文主要介紹了Docker從0到1實(shí)現(xiàn)項(xiàng)目編排部署,感興趣的可以了解一下2025-03-03
Docker環(huán)境中部署n8n支持Python節(jié)點(diǎn)(兩種部署方式)
本文介紹如何在Docker環(huán)境中部署n8n工作流自動化工具,并確保支持 Code in Python (Native) 節(jié)點(diǎn),本文給大家分享兩種常見的部署方式,感興趣的朋友跟隨小編一起看看吧2026-02-02

