编写docker-compose,实现tomcat-01、tomcat-02,链接mysql与redis

一、编写docker-compose.yml文件

要编写一个docker-compose.yml文件来部署两个Tomcat容器(tomcat-01和tomcat-02)、一个MySQL容器和一个Redis容器,并确保Tomcat容器能够链接到MySQL和Redis容器,你需要遵循以下步骤。

首先,你需要确保你的Docker环境中已经安装了所有必要的镜像,或者Docker Compose文件应该包含从Docker Hub或其他源拉取这些镜像的指令。

以下是一个简化的docker-compose.yml文件,它定义了两个Tomcat容器(tomcat-01和tomcat-02)、一个MySQL容器和一个Redis容器:

cd ~
mkdir docker-compose
cd docker-compose
vim docker-compose.yml
version: '3.2'  
services:  
  mysql:  
    image: mysql:5.7  
    container_name: mysql-container  
    restart: always  
    environment:  
      MYSQL_ROOT_PASSWORD: rootpassword  
      MYSQL_DATABASE: tomcatdb  
      MYSQL_USER: tomcatuser  
      MYSQL_PASSWORD: tomcatpassword  
    ports:  
      - "3306:3306"  
    volumes:  
      - mysql_data:/var/lib/mysql  
  
  redis:  
    image: redis:latest  
    container_name: redis-container  
    restart: always  
    ports:  
      - "6379:6379"  
    volumes:  
      - redis_data:/data  
  
  tomcat-01:  
    image: tomcat:8.5-jre8  
    container_name: tomcat-01-container  
    restart: always  
    depends_on:  
      - mysql  
      - redis  
    ports:  
      - "8080:8080"  
    environment:  
      - CATALINA_OPTS=-Ddb.host=mysql -Ddb.port=3306 -Dcache.host=redis -Dcache.port=6379  
    volumes:  
      - ./tomcat-01/webapps:/usr/local/tomcat/webapps  
  
  tomcat-02:  
    image: tomcat:8.5-jre8  
    container_name: tomcat-02-container  
    restart: always  
    depends_on:  
      - mysql  
      - redis  
    ports:  
      - "8081:8080"  
    environment:  
      - CATALINA_OPTS=-Ddb.host=mysql -Ddb.port=3306 -Dcache.host=redis -Dcache.port=6379  
    volumes:  
      - ./tomcat-02/webapps:/usr/local/tomcat/webapps  
  
volumes:  
  mysql_data:  
  redis_data:

注意

  1. 此处使用了官方的mysql:5.7redis:latesttomcat:8.5-jre8镜像。你可以根据需要更改这些值。
  2. CATALINA_OPTS是一个示例环境变量,用于传递数据库和缓存服务器的信息给Tomcat。但Tomcat默认不会使用这些环境变量,需要根据自己的应用配置(例如通过context.xmlserver.xml或应用本身的配置)来正确设置这些值。
  3. 假设本地的Tomcat应用已经配置好了使用MySQL和Redis。可能需要根据自己的应用需求来修改这个配置。
  4. 将MySQL和Redis的默认端口映射到了主机上的相应端口,以便可以从主机上直接访问它们。同样,也将Tomcat的默认端口映射到了不同的主机端口,以便两个Tomcat实例可以同时运行。
  5. 创建了数据卷mysql_dataredis_data用于持久化MySQL和Redis的数据。

二、为了执行这个docker-compose文件,需要按照以下步骤操作:

在我们创建的docker-compose目录下,执行下面命令

docker-compose up -d

这个命令会读取docker-compose.yml文件,并启动其中定义的所有服务。-d标志表示在后台运行这些服务(即守护进程模式)。

三、验证服务

要查看按照docker-compose.yml文件执行出来的Docker容器和服务,你可以使用以下步骤:

  1. 检查容器状态
    使用docker-compose ps命令来查看当前正在运行的容器及其状态。这个命令会列出所有在docker-compose.yml文件中定义的服务,以及它们的状态(如Up、Down、Restarting等)。

    docker-compose ps

    输出可能类似于:

    Name Command State Ports
    ---------------------------------------------------------------------------------------
    mysql-container docker-entrypoint.sh ... Up 3306/tcp
    redis-container docker-entrypoint.sh ... Up 6379/tcp
    tomcat-01-container catalina.sh run Up 0.0.0.0:8080->8080/tcp
    tomcat-02-container catalina.sh run Up 0.0.0.0:8081->8080/tcp
  2. 查看日志
    你可以使用docker-compose logs命令来查看服务容器的日志输出。这个命令会显示所有服务的日志,或者你可以指定一个服务来查看其日志。

    查看所有服务的日志:

    docker-compose logs

    只查看tomcat-01服务的日志:

    bash复制代码

    docker-compose logs tomcat-01
  3. 检查端口映射
    你可以使用docker ps命令来查看Docker容器及其端口映射。这将显示所有正在运行的容器,包括由docker-compose启动的容器

    docker ps

    在输出中,你会看到类似这样的端口映射(Ports列):

    PORTS
    0.0.0.0:8080->8080/tcp, :::8080->8080/tcp

    这表示主机的8080端口被映射到了容器的8080端口。

  4. 访问服务
    如果服务配置了端口映射(如Tomcat的8080端口),你可以通过浏览器或其他工具访问这些服务。例如,对于Tomcat服务,你可以在浏览器中访问http://localhost:8080/(或http://<你的服务器IP>:8080/)来查看Tomcat的默认页面。

  5. 检查数据卷
    如果你使用了数据卷(如mysql_dataredis_data),你可以使用docker volume ls命令来查看所有Docker数据卷。然后,你可以使用docker volume inspect <volume_name>来查看特定数据卷的详细信息。

    docker volume ls
    docker volume inspect mysql_data

通过这些步骤,能够验证docker-compose.yml文件是否正确执行,并且服务是否按预期运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值