安装docker并部署springboot项目

1.创建虚拟机项目ubuntu

第一步先创建虚拟机系统,切记必须要联网才行。 可以看到我这个虚拟机已经连上网络了。

配不配置jdk其实都可以,我们部署docker可以直接使用官方的jdk镜像,找到对应的版本就行,直接看第三步就OK。

2.安装jdk

首先需要去jdk官网,找到对应jdk的linux版本,下面按照jdk11来举例。 下载之后需要先上传到虚拟机服务器,这里我是用xftp来举例,如下: 这里我是上传到了/usr/local/的目录下,因为可能是因为使用的用户连接而不是管理员连接,因此就需要先在该目录下执行一条命令:

bash 复制代码
sudo chown -R username:username 文件夹路径

比如我这里的用户名是ljx,文件夹路径是/usr/local/,所以我要终端输入命令 sudo chown -R username:username 文件夹路径

上传完成之后就需要解压了,这里我建议先创建一个JAVA目录,方便查看。

arduino 复制代码
sudo mkdir java

解压使用命令:

bash 复制代码
# 解压压缩包 
sudo tar -zxvf jdk-11.0.25_linux-x64_bin.tar.gz -C /usr/local/java/

解压完成后我们就可以看到数据了,然后检查下版本,看看有没有问题。 可以看到没有问题,那么接下来就需要配置环境变量了,直接按照下面代码走就可以了:

bash 复制代码
# 没有安装vim就用vi就可以
sudo vim /etc/profile 

# 进入到文件之后将下列内容添加到文件末尾即可
# JDK 11 
export JAVA_HOME=/usr/local/java/jdk-11.0.12
export CLASSPATH=$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin

# 使其生效 
source /etc/bashrc

3.安装docker

第一步先更新软件包。

sql 复制代码
sudo apt-get update 
sudo apt-get upgrade

如果你电脑上有老版本的docker,那么请先卸载,执行下面命令即可:

sudo apt-get remove docker docker-engine docker.io containerd runc

第二步可安装docker了,执行以下步骤即可:

1.安装docker依赖:

arduino 复制代码
sudo apt-get install ca-certificates curl gnupg lsb-release

2.添加docker密钥

arduino 复制代码
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

3.添加阿里云docker软件源(从阿里云的软件源里面去下载docker,更快)

bash 复制代码
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

4.安装docker即可

arduino 复制代码
apt-get install docker-ce docker-ce-cli containerd.io

5.配置用户组(目的就是以后执行docker命令不需要再重新输入密码操作了)

bash 复制代码
sudo usermod -aG docker $USER
sudo reboot

配置完用户组会黑一下屏,这很正常,等它重启就行了。

接下来检查docker安装是否成功:

arduino 复制代码
systemctl start docker
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
service docker restart
sudo docker run hello-world

然后查看docker版本号:

复制代码
sudo docker version

这样子就成功了,然后我们配置镜像源即可:

bash 复制代码
sudo vi /etc/docker/daemon.json

然后将下列内容输入进去即可:

json 复制代码
{ 
"registry-mirrors": 
[ 
  "https://docker.m.daocloud.io", 
  "https://noohub.ru", 
  "https://huecker.io", 
  "https://dockerhub.timeweb.cloud", 
  "https://docker.rainbond.cc" 
] 
}

保存之后重启docker即可:

复制代码
sudo systemctl restart docker

4.打包springboot即可

首先需要在springboot的根目录下创建两个文件,一个是Dockerfile,一个是docker-compose.yml。

Dockerfile

bash 复制代码
# 使用官方的 OpenJDK 11 镜像作为基础镜像
FROM liferay/jdk11

# 设置工作目录
WORKDIR /app

# 将打包好的 JAR 文件复制到镜像中
COPY my-springboot-app.jar app.jar

# 暴露应用程序端口
EXPOSE 8080

# 启动命令
ENTRYPOINT ["java", "-jar", "/app/app.jar"]

docker-compose.yml

yaml 复制代码
version: '3.8'

services:
  db:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
    ports:
      - "3306:3306"
    volumes:
      - db_data:/var/lib/mysql

  redis:
    image: redis:alpine
    ports:
      - "6379:6379"

  app:
    build: .
    depends_on:
      - db
      - redis
    ports:
      - "8080:8080"
    environment:
      SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/${MYSQL_DATABASE}?useSSL=false&serverTimezone=UTC
      SPRING_DATASOURCE_USERNAME: ${MYSQL_USER}
      SPRING_DATASOURCE_PASSWORD: ${MYSQL_PASSWORD}
      SPRING_REDIS_HOST: redis
      SPRING_REDIS_PORT: 6379

volumes:
  db_data:

为了保险起见还需要创建一个.env文件,如下:

ini 复制代码
MYSQL_ROOT_PASSWORD=your_strong_root_password
MYSQL_DATABASE=myappdb
MYSQL_USER=myappuser
MYSQL_PASSWORD=your_strong_user_password

这样子Docker Compose会自动读取同一目录下的.env文件里面的环境变量。

然后运行命令mvn clean package将springboot项目打包,这时候我们的target目录下会有个jar包,我们将jar包,Dockerfile文件和docker-compose文件上传到虚拟机即可。

4.运行docker

输入以下命令即可:

bash 复制代码
# 下载 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep -Po '"tag_name": "\K.*\d')" /usr/local/bin/docker-compose

# 应用可执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 验证 Docker Compose 是否安装成功
docker-compose --version

然后进入到有jar包的目录里面即可,运行命令

perl 复制代码
docker build -t my-springboot-app .

出现上面情况就说明成功了。

然后再构建docker容器,执行以下命令:

bash 复制代码
# 构建镜像并启动服务
sudo docker-compose up --build -d

上面--build不写也行,这个作用是已有镜像也要重新构建,-d则是指在后台运行容器。

如下图所示代表成功了。

然后我们去查看下容器日志即可,报错也可以看到:

bash 复制代码
# 查看容器日志
sudo docker-compose logs -f app
相关推荐
开心就好2025几秒前
Windows 上传 IPA 到 App Store 的步骤讲解
后端·ios
听风者就是我34 分钟前
混合检索:关键词 + 向量的最佳组合
后端·ai编程
supersolon35 分钟前
WSL2(Linux)升级docker
linux·运维·docker·wsl·升级
Memory_荒年1 小时前
当餐厅后厨也懂分布式:SpringBoot中的重试、限流、熔断与幂等的“四重奏”
java·后端·spring
一殊酒1 小时前
【Docker】常用命令大全及解析
docker·容器·eureka
刘晓飞1 小时前
nestjs 中的 rxjs
后端
Uncertainty!!2 小时前
将docker镜像上传到github镜像存储仓库(GitHub 容器仓库(GHCR)使用流程)
docker·容器·github
编码忘我2 小时前
java策略模式实战之优惠券
java·后端
anzhxu2 小时前
SpringBoot 3.x 整合swagger
java·spring boot·后端
青椒啊2 小时前
DPDK入门到精通(一)
后端