使用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安裝jenkins容器內(nèi)無法訪問外網(wǎng)
這篇文章為大家主要介紹了docker安裝jenkins容器內(nèi)無法訪問外網(wǎng)的問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11docker 部署 Elasticsearch kibana及ik分詞器詳解
這篇文章主要介紹了docker 部署 Elasticsearch kibana及ik分詞器詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-05-05Docker?link實(shí)現(xiàn)容器互聯(lián)的方式
通過link方式創(chuàng)建容器,然后我們可以使用被link容器的別名進(jìn)行訪問。本文重點(diǎn)給大家介紹Docker?link實(shí)現(xiàn)容器互聯(lián)的方式,感興趣的朋友一起看看吧2021-12-12Docker 部署單機(jī)版 Pulsar 和集群架構(gòu) Redis(開發(fā)神器)的方法
這篇文章主要介紹了Docker 部署單機(jī)版 Pulsar 和集群架構(gòu) Redis(開發(fā)神器)的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10總結(jié)Docker不適合部署數(shù)據(jù)庫的7大原因
在本篇文章里小編給大家整理一篇關(guān)于Docker不適合部署數(shù)據(jù)庫的7大原因,有興趣的朋友們可以參考學(xué)習(xí)下。2021-01-01用docker部署RabbitMQ環(huán)境的詳細(xì)介紹
這篇文章主要介紹了用docker部署RabbitMQ環(huán)境,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-07-07docker nginx 部署多個(gè)項(xiàng)目的示例方法
這篇文章主要介紹了docker nginx 部署多個(gè)項(xiàng)目的示例方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-11-11