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