使用docker compose一鍵啟動多個應用

一只爱阅读的程序员發表於2024-04-20

使用docker compose一鍵啟動多個應用

環境說明

linux系統版本:lsb_release -a

docker 版本: docker -v

不同的作業系統以及軟體版本,可能會遇到不一樣的問題,一定要注意版本問題。

.1.安裝教程,參考官網安裝指南。

https://dockerdocs.cn/compose/install/index.html

版本說明。

安裝操作說明。

安裝命令如下,

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

安裝失敗。因為該檔案是儲存在github上面的,需要連線外網,因此只能換種方式安裝。

執行命令

yum -y install epel-release --allowerasing

yum -y install python3-pip

然後安裝指定版本

pip3 install docker-compose==1.29.1

執行時報錯如下,

大致錯誤資訊的意思是需要升級pip3

升級命令如下

sudo python3 -m pip install --upgrade pip

然後命令又變為pip --version

再次執行

pip install docker-compose==1.29.1

安裝成功

檢視版本

docker-compose -v

.2.準備docker-compose.yml配置檔案。

上傳到伺服器中指定的位置。最終的配置檔案會放在最後面。

.3.啟動docker compose服務.

docker compose up -d 注意事項:需要在docker-compose.yarm同一個目錄下執行該命令!!

第一次報錯,

第十三行配置錯誤,登出後重新執行。

再次啟動服務,有一個服務啟動失敗,其他服務啟動成功。

初步來看是jar包的位置錯誤,沒有正確掛載導致的。

修改Java服務相關配置後

volumes:

- "/opt/u01/exam/java/WebBackend.jar:/project/WebBackend.jar"

- "/opt/u01/exam/java:/project"

command: [

'java',

'-jar',

'WebBackend.jar'

]

再次啟動,執行同樣的命令,之前的服務不受影響,不會重新啟動。修改後,Java服務啟動然後立馬退出。檢視日誌,錯誤資訊如下,

再次修改配置檔案,jar檔案需要加上容器內的絕對路徑。

command: [

'java',

'-jar',

'/project/WebBackend.jar'

]

再次執行命令服務啟動成功。

.4.測試服務是否正常。

nginx服務正常。

mysql資料庫連線正常。

redis服務正常。

後臺服務異常,無法開啟。

檢視日誌資訊如下,

最後排查到問題時因為自己在配置時,Java服務的埠設定錯誤,修改後重新啟動服務即可。

最終的docker-compose.yarm配置檔案資訊如下,

version: '3.8'

networks:

bigstuff:

services:

mysql:

image: mysql:5.7

container_name: mysql

ports:

- "自己設定埠:3306"

environment:

TZ: Asia/Shanghai

MYSQL_ROOT_PASSWORD: 自己設定密碼

#MYSQL_ROOT_HOST: %

volumes:

- "/opt/u01/exam/mysql/my.cnf:/etc/mysql/my.cnf"

- "/opt/u01/exam/mysql/logs:/var/log/mysql"

- "/opt/u01/exam/mysql/data:/var/lib/mysql"

networks:

- bigstuff

redis:

image: redis:6.0.8

container_name: redis

ports:

- "自己設定埠:6379"

environment:

TZ: Asia/Shanghai

volumes:

- "/opt/u01/exam/redis/redis.conf:/usr/local/etc/redis/redis.conf"

- "/opt/u01/exam/redis/data:/data"

- "/opt/u01/exam/redis/log:/logs"

#配置檔案啟動

command: redis-server /usr/local/etc/redis/redis.conf --appendonly yes

networks:

- bigstuff

webbackend:

image: openjdk:8

container_name: webbackend

ports:

- "自己設定埠:8080"

volumes:

- "/opt/u01/exam/java/WebBackend.jar:/project/WebBackend.jar"

- "/opt/u01/exam/java:/project"

command: [

'java',

'-jar',

'/project/WebBackend.jar'

]

depends_on:

- mysql

- redis

networks:

- bigstuff

nginx:

image: nginx:1.24.0

container_name: nginx

ports:

- "443:443"

volumes:

- "/opt/u01/exam/nginx/html:/usr/share/nginx/html"

- "/opt/u01/exam/nginx/log:/var/log/nginx"

- "/opt/u01/exam/nginx/nginx.conf:/etc/nginx/nginx.conf"

- "/opt/u01/exam/nginx/yilangcode.xyz.key:/etc/nginx/yilangcode.xyz.key"

- "/opt/u01/exam/nginx/yilangcode.xyz.pem:/etc/nginx/yilangcode.xyz.pem"

networks:

- bigstuff

參考博文:

https://forums.centos.org/viewtopic.php?t=76065

https://blog.csdn.net/qq_39626154/article/details/82753412

https://www.cnblogs.com/qinlangsky/p/12653880.html

https://juejin.cn/post/7042663735156015140

https://cloud.tencent.com/developer/article/2317630

https://juejin.cn/post/7081931407630532616

https://developer.aliyun.com/article/1443415

相關文章