使用docker compose一键启动多个应用

使用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

posted @ 2024-04-20 15:08  一只爱阅读的程序员  阅读(548)  评论(0编辑  收藏  举报