docker-compose 一键安装redis和Mysql,部署java

本章是基于Centos7系统教程

前提准备

安装docker

执行下面命令

$ yum install -y yum-utils device-mapper-persistent-data lvm2
$ yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
$ yum -y install docker-ce docker-ce-cli containerd.io
$ yum list docker-ce --showduplicates | sort -r
$ yum -y install docker-ce-19.03.4 docker-ce-cli-19.03.4 containerd.io
$ systemctl start docker
##启动docker后,执行下面脚本看是否正常启动
$ docker ps

安装成功后,建议配置阿里云镜像,网上很多教程。这样下载镜像就很快了。

安装docker-compose

## 确保已安装curl命令
$ curl --version
##如果没有则先安装
$ yum -y install curl
##安装docker-compose
$ curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose
##检查是否安装成功
$ docker-compose version

部署

文件准备

  1. 在home目录下(~/)新建docker目录,进入docker目录,再分别创建mysql目录和java目录。mysql目录是用来放初始化的脚本文件,我们可以把需要初始化的sql写好,命名为init.sql放在此目录下。java目录用来放我们要启动的java项目的jar包。
  2. 最后的目录树为
    ~/docker /
    |-- docker-compose.yml
    |-- mysql
    —|-- init.sql
    |-- java
    —|-- test-docker.jar

编写docker-compse.yml文件

version: '3'
services:
	##mysql配置
    mysql:
        environment:
        	##root账号的密码
            MYSQL_ROOT_PASSWORD: "123456"
        image: "docker.io/mysql:latest" 
        container_name: mysql
        restart: always
        ##映射挂载
        volumes:
        	##数据目录,要确保先创建好
            - "/data/mysql:/var/lib/mysql"
            ##初始化的脚本,初始化我们存放的init.sql文件
            - "./mysql:/docker-entrypoint-initdb.d/"
        ports:
            - "3306:3306"
    ##redis配置
    redis:
      image: redis:latest
      container_name: redis
      command: redis-server --appendonly yes --requirepass "123456"
      ports:
        - "6379:6379"
      volumes:
      	##数据目录,要确保先创建好
        - /data/redis:/data
    java:
        image: ascdc/jdk8
        container_name: test-docker
        ports:
          - "8080:8080"
        volumes:
            - ~/docker/java/test-docker.jar:/data/test-docker.jar
        ##这是java项目的环境变量,yml文件配置
        environment:
            - SPRING_REDIS_HOST=127.0.0.1
            - SPRING_REDIS_PORT=6379
            - SPRING_REDIS_PASSWORD=123456
            - SPRING_DATASOURCE_URL=jdbc:mysql://127.0.0.1:3306/test-docker?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false
            - SPRING_DATASOURCE_USERNAME=root
            - SPRING_DATASOURCE_PASSWORD=123456
        entrypoint: java -jar /data/test-docker.jar 
        depends_on:
            - redis
            - mysql

启动

在~/docker目录下,执行 docker-compose up -d 即可。

存在问题

redis与mysql在未完全初始完成,java项目先跑起来就会报连不上mysql/redis的错误。虽然docker-compese.yml文件中有配置depends_on。但其只是确保容器启动成功,并不保证初始化成功。

要使用docker-compose部署RedisMySQLJava服务,可以按照以下步骤进行操作: 1. 首先,创建一个名为`docker-compose.yaml`的文件,并在该文件中定义服务: ``` version: '3' services: redis: image: redis ports: - '6379:6379' mysql: image: mysql environment: - MYSQL_ROOT_PASSWORD=your_password - MYSQL_DATABASE=your_database - MYSQL_USER=your_user - MYSQL_PASSWORD=your_password volumes: - ./data:/var/lib/mysql ports: - '3306:3306' java_app: build: ./your_java_app_directory ports: - '8080:8080' depends_on: - redis - mysql ``` 2. 在上述`docker-compose.yaml`文件中,定义了3个服务:`redis`、`mysql`和`java_app`。 - `redis`服务使用Redis镜像,并将容器内的6379端口映射到主机的6379端口。 - `mysql`服务使用MySQL镜像,并设置环境变量用于配置MySQL实例,同时将容器内的3306端口映射到主机的3306端口。 - `java_app`服务将使用构建目录中的Java应用程序构建,并将容器内的8080端口映射到主机的8080端口。同时,此服务依赖于`redis`和`mysql`服务,确保在启动`java_app`服务之前,`redis`和`mysql`服务已经启动。 3. 在`mysql`服务的环境变量中,根据需要设置MySQL的root密码、数据库名称、用户名和密码。同时,为了持久化MySQL的数据,将容器内的`/var/lib/mysql`目录映射到主机的`./data`目录。 4. 在`java_app`服务中,构建Java应用程序的镜像需要指定所在的目录。确保将Java应用程序的构建文件和依赖项放置在正确的目录中。 5. 最后,在命令行中使用`docker-compose up`命令来启动服务。这将根据`docker-compose.yaml`文件中的配置,创建并启动RedisMySQLJava服务的Docker容器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

碩果

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值