在服务器上运行Spring Boot程序,并与MySQL和Redis容器关联

在服务器上运行Spring Boot程序,并与MySQL和Redis容器关联

本文介绍如何在服务器上使用Docker运行Spring Boot程序,并配置与MySQL和Redis容器的关联。

部署Redis容器

需要注意的就是–requirepass “123456”,需要预先设置密码

sudo docker run -d --name redis -p 6379:6379 redis redis-server --requirepass "123456" redis

部署MySQL容器

首先,拉取MySQL镜像并保存为tar包,然后将其加载到服务器的Docker中。

docker pull mysql:8.1
docker save -o d:/mysql.tar mysql
# 服务器命令
sudo docker load -i mysql.tar

使用以下命令启动MySQL容器:

sudo docker run  --restart=always --name mysql --privileged=true -p 3306:3306  -v /home/mysql/log:/var/log/mysql -v /home/mysql/data:/var/lib/mysql -v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.1 --lower-case-table-names=1
  1. sudo: 这是Linux命令行中的一个命令,用来允许普通用户执行超级用户(管理员)的命令。
  2. docker run: 这是Docker的命令,用来启动一个新的容器。
  3. --restart=always: 这个参数告诉Docker,如果容器退出,它总是重新启动。
  4. --name mysql: 这个参数给容器指定一个名字,在这个例子中名字是"mysql"。
  5. --privileged=true: 这个参数让容器获得所有的权限,这通常只在需要访问宿主机的设备或文件系统时使用。
  6. -p 3306:3306: 这个参数将容器的3306端口映射到宿主机的3306端口。这是MySQL服务的默认端口,通常用于数据库通信。
  7. -v /home/mysql/log:/var/log/mysql: 这个参数进行卷映射,将宿主机的/home/mysql/log目录映射到容器的/var/log/mysql目录。这用于存储MySQL的日志文件。
  8. -v /home/mysql/data:/var/lib/mysql: 这个参数将宿主机的/home/mysql/data目录映射到容器的/var/lib/mysql目录。这是MySQL存储数据的地方。
  9. -v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf: 这个参数将宿主机的/home/mysql/conf/my.cnf文件映射到容器的/etc/mysql/my.cnf文件。这是MySQL的配置文件。
  10. -e MYSQL_ROOT_PASSWORD=123456: 这个参数设置MySQL的root用户密码。在这个例子中,密码是"123456"。(,-e 是一个参数形式,代表 “environmental variable”,用于设置环境变量。当你使用 -e 参数时,你可以向容器内指定一个环境变量,其值会在容器启动时被设置。)
  11. -d: 这个参数让容器在守护进程模式下运行,即在后台运行。
  12. mysql:8.1: 这个参数指定了要运行的Docker镜像,这里是MySQL的8.1版本。
  13. --lower-case-table-names=1: 这个参数是一个MySQL的配置选项,它告诉MySQL将表名解释为小写。这在某些情况下可以避免大小写敏感的问题

配置MySQL容器中root用户的远程访问权限

​ 在配置MySQL容器中root用户的远程访问权限时,可能会遇到各种问题,这里记录了如何正确分配root用户远程访问权限的步骤,以解决可能出现的报错1251问题。

步骤一:进入MySQL容器

使用以下命令可以进入MySQL容器:

docker exec -it my_mysql bash

步骤二:登录MySQL数据库

使用以下命令登录MySQL数据库(假设root用户的密码是123456):

mysql -uroot -p123456

步骤三:给root用户分配远程访问权限

执行以下SQL命令,给root用户分配能够从任何主机访问数据库的权限:

alter user 'root'@'%' identified with mysql_native_password by '123456';

这里的%代表任何主机,可以根据需求替换为特定的IP或主机名。

步骤四:刷新权限

执行以下命令,使权限更改立即生效:

flush privileges;

步骤五:测试连接

在另外的终端或者工具中,使用以下命令测试连接:

mysql -uroot -p123456 -h [服务器地址]

[服务器地址]替换为实际的服务器地址。

Docker打包加载在服务器运行springboot程序

Docker是一种非常实用的容器技术,可以方便地将本地开发的程序打包部署到服务器上,避免配置环境的麻烦。以下是将本地Spring Boot程序打包运行在服务器上的步骤:

  1. 在项目根目录下编写dockerfile文件:
# 基础镜像
FROM openjdk:17-jdk-alpine

# 在运行时自动挂载 /tmp 目录为匿名卷,提高可移植性
VOLUME /tmp

# 将构建的 Spring Boot 可执行 JAR 复制到容器中,重命名为 app.jar
ADD target/youlai-boot.jar app.jar

# 指定容器启动时执行的命令
CMD java \
    -Djava.security.egd=file:/dev/./urandom \
    -jar /app.jar

# 暴露容器的端口
EXPOSE 8899
  1. 在项目根目录下运行以下命令进行打包:
docker build -t api:5.0 .
  1. 生成tar文件,方便移植到服务器进行部署:
docker save -o api5.tar api:5.0
  1. 将tar文件上传到服务器,并加载到Docker中:
sudo docker load -i api5.tar
  1. 启动Spring Boot程序容器:
sudo docker run -it --privileged=true --name api /
  --link redis:redis --link mysql:mysql /
  -p 8899:8899 -d -v /home/shutui/data/files:/files  api:5.0

参数解释:

  1. -d, --detach: 后台运行容器。
  2. -p, --publish: 将容器端口映射到宿主机上。
  3. --name: 为容器指定名称。
  4. -v: 映射宿主机和容器的文件路径。
    在spring boot的application.yml中,配置如下:
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://mysql:3306/demo_db?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&allowMultiQueries=true
    username: root
    password: 123456
  data:
    redis:
      host: redis
      port: 6379
      password: 123456

其中mysql和redis就是关联的容器名字。

以下是润色和完善后的博客内容:

更新后台程序版本

在这部分中,我将分享如何更新后台程序的 Docker 版本。以下是详细的操作步骤:

1. 中止原有 Docker 容器

首先,我们需要中止当前运行的 Docker 容器。使用以下命令来停止并移除名为 api 的容器:

sudo docker rm -f api

2. 删除原有 Docker 镜像

接下来,我们需要删除旧版本的 Docker 镜像。使用以下命令来删除版本号为 5.0api 镜像:

sudo docker rmi api:5.0

3. 加载新的 Docker 镜像

然后,我们需要加载新的 Docker 镜像。假设新镜像文件名为 api6.tar,使用以下命令来加载它:

sudo docker load -i api6.tar

4. 启动新的 Docker 容器

最后,我们启动新的 Docker 容器。使用以下命令来运行新版本的 api 容器(版本号为 6.0):

sudo docker run -it --privileged=true --name api \
  --link redis:redis --link mysql:mysql \
  -p 8899:8899 -d -v /home/shutui/data/files:/files api:6.0

通过上述步骤,你就可以成功更新后台程序的 Docker 版本。这样可以确保你的后台服务始终运行在最新的环境中,获得最佳的性能和安全性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值