Docker-Compose部署tomcat与redis及mysql

Posted Friends of the wind

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker-Compose部署tomcat与redis及mysql相关的知识,希望对你有一定的参考价值。

部署流程:

  1. 导入镜像
  2. 安装docker-compose容器编排工具
  3. 创建配置文件
  4. 运行
  5. 验证

步骤:

技巧:镜像也可不事先下载,执行命令会自动下载,但是那样会很慢!!!

1、 导入镜像
提示:实验环境导入前先保证,防火墙关闭,安全策略关闭,docker正常启动;版本不要过高,有些版本部分场景会报错!

docker load -i tomcat163.tar //tomcat镜像
docker load -i mysql5.7.tar //MySQL镜像
docker load -i redis.tar //redis镜像

2、 安装docker-compose容器编排工具

1)移动到命令默认搜索路径并重命名
mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose

2)赋权
chmod +x docker-compose

3、 创建配置文件
1)创建目录
mkdir /repository
2)进入目录,创建文件
cd /repository/
vim docker-compose.yml

version:  "3"

services:
  tomcat:
    image:  hub.c.163.com/library/tomcat
    container_name: tomcat
    ports:  
      - "8080:8080"
    volumes:
      - tomcatwebapps:/usr/local/tomcat/webapps
    networks:
      - repository
    depends_on:
      - mysql
      - redis
    healthcheck:
      test: ["CMD","curl","-f","http://localhost"]
      interval: 1m30s
      timeout:  10s
      retries:  3
    ulimits:
      nproc:  65535
      nofile:
        soft: 20000
        hard: 40000

  mysql:
    image:  mysql:5.7
    container_name: mysql
    ports:
      - "3306:3306"
    volumes:
      - mysqldata:/var/lib/mysql
      - mysqlconf:/etc/mysql
    environment:
      MYSQL_ROOT_PASSWORD:  123.com
    networks:
      - repository

  redis:
    image:  redis:5.0.10
    container_name: redis
    ports:  
      - "6379:6379"
    volumes:
      - redisdata:/data
    networks: 
      - repository
    command:  "redis-server --appendonly  yes"

volumes:
  tomcatwebapps:
  mysqldata:
  mysqlconf:
  redisdata:

networks:
  repository:

释义:

services:	#用来书写当前项目中的那些容器、服务
    image: hub.c.163.com/library/tomcat #指定使用镜像
    container_name: tomcat		#指定容器名
    ports: 				#指定端口映射
      - "8080:8080"
    volumes:				#数据卷共享
     #- /root/apps:/usr/local/tomcat/webapps#使用自定义路径映射数据卷(事先创建挂载目录)
      - tomcatwebapps:/usr/local/tomcat/webapps #使用自动数据卷
    networks:	#当前服务使用哪个网桥
      - tomnet
    depends_on:	#把下列依赖的服务先启动,自己再启动;体现了容器的编排
      - mysql
      - redis 
    healthcheck: #实现docker引擎和容器的心跳检查
      test: ["CMD","curl","-f","http://localhost"]
      interval: 1m30s
      timeout: 10s
      retries: 3
    ulimits:	#修改容器中最大进程数和文件数限制
    
 environment:
      MYSQL_ROOT_PASSWORD: 123.com	#修改环境信息,改root密码
      
 command: "redis-server --appendonly yes"	#容器执行命令

volumes:	#声明上面自动数据卷
  tomcatwebapps:	#声明数据卷名,自动创建项目名开头的卷名
    external:		#使用自定义外部卷名
      true/false	#true 需要提前手动创建这个命名的数据卷
  mysqldata:
  mysqlconf:
  redisdata:

networks:	#声明服务的网桥
  tomnet:	#定义项目开头的网桥名,默认类型bridge
    external:  #是否使用外部提前创建的网桥,true为确定
      true

4、 运行docker-compose
常见报错:分两类
一类:缺少代码,提示解析块映射时出错,1行1列;2行3列

解决:

二类:多附加了参数,卷类型不允许这样设置

解决:删除多余参数

成功如下图:

验证:

访问tomcat:

访问redis:
1)windows11软件登录redis创建键值对

2)进入容器,查看到此键值对

访问MySQL:
windows11软件登录MySQL可以使用

以上是关于Docker-Compose部署tomcat与redis及mysql的主要内容,如果未能解决你的问题,请参考以下文章

docker-compose入门示例:一键部署 Nginx+Tomcat+Mysql

docker与docker-compose介绍,对比与使用

Docker Compose部署Nexus3时的docker-compose,yml代码

基于Docker-Compose 部署前后端分离单体项目(一)

使用 Nginx Docker 镜像部署前端静态界面

docker-compose概述与编排部署