Springboot打包并部署在linux上——备忘笔记

一、原始方法

Linux操作系统上安装jdk8

wget https://download.oracle.com/otn/java/jdk/8u311-b11/4d5417147a92418ea8b615e228bb6935/jdk-8u311-linux-x64.rpm

安装后可 java -version查看版本

没wget的下载java的linux版JDK压缩版,解压并配置环境变量

可供参考的链接

Springboot打包

maven添加如下(记得改你启动类),注意如果你的项目是使用Spring Initializr建立的springboot项目会自带该配置,那就不用改了。

<build>
        <plugins>  
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <includeSystemScope>true</includeSystemScope>
                    <mainClass>com.example.videDemo.App</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>

将该jar包存放到linux上

java -jar path/file.jar

 推荐  :为后台运行,并将日志输出到hello(自定义)日志文件

nohup java -jar boot工程.jar &>hello.log &

看看其日志情况

cat hello.log

提示:挂到后台,会看到程序的pid

防火墙开放对应端口,比如我的是8080端口

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

二、使用Docker部署

Docker基于Go语言并遵从Apache2.0协议开源,可以让开发者打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。

主要是这东西可大大节约配置环境的过程。

安装方法

方法一、

根据您的需要,您可以用不同的方式安装Docker Engine:

  • 你可以设置Docker的存储库并从中进行安装,以便于安装和升级任务。这是推荐的方法。

  • 您可以下载RPM包,手动安装,并完全手动管理升级。这在无法访问互联网的情况下非常有用,例如在有空隙的系统上安装Docker。

  • 在测试和开发环境中,您可以使用自动化的便利脚本安装Docker。

使用rpm存储库安装

在新主机上首次安装Docker Engine之前,需要设置Docker存储库。之后,您可以从存储库中安装和更新Docker。

设置存储库

安装yum-utils包(提供yum-config-manager实用程序)并设置存储库。

$ sudo yum install -y yum-utils
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装Docker引擎
  1. 安装Docker引擎、containerd和Docker Compose:


    要安装最新版本,请运行:

    $ sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    

    如果提示接受GPG密钥,请验证指纹是否匹配060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35,如果是的话,接受它。

    这个命令安装Docker,但是不启动Docker。它还创建了一个docker组,但是默认情况下,它不会向该组添加任何用户。


  2. 启动Docker。

    $ sudo systemctl start docker
    
  3. 通过运行以下命令验证Docker引擎安装是否成功hello-world形象。

    $ sudo docker run hello-world
    

    该命令下载一个测试映像,并在容器中运行它。当容器运行时,它打印一条确认消息并退出。

现在已经成功安装并启动了Docker引擎。

升级Docker引擎

要升级Docker引擎,请遵循安装说明,选择要安装的新版本。

方法二、

从软件包安装

如果你不能使用Docker的rpm仓库来安装Docker引擎,您可以下载.rpm文件并手动安装。你需要下载一个新的文件,每次你想升级Docker引擎。

  1. 去…Index of linux/centos/并选择您的CentOS版本。然后浏览至x86_64/stable/Packages/并下载.rpm您要安装的Docker版本的文件。

  2. 安装Docker引擎,将以下路径更改为您下载Docker包的路径。

     
    $ sudo yum install /path/to/package.rpm
    

    Docker已安装但未启动。这docker创建了组,但没有用户添加到组中。

  3. 启动Docker。

     
    $ sudo systemctl start docker
    
  4. 通过运行以下命令验证Docker引擎安装是否成功hello-world形象。

     
    $ sudo docker run hello-world
    

    该命令下载一个测试映像,并在容器中运行它。当容器运行时,它打印一条确认消息并退出。

在linux上创建一个mkdir rq建一个文件夹,名字自己起,里面放入你的jar包,并在该文件夹中vim Dockefile,建立Dockerfile配置文件

Dockerfile文件内容如下:

FROM ascdc/jdk8
 
ADD *.jar app.jar
ENTRYPOINT ["java","-jar","app.jar"]

这里只是一个相当简单Dockerfile配置文件模板

  1. FROM ascdc/jdk8

    • 这一行指定了基础镜像为 ascdc/jdk8,这是一个预装了 Java 8 开发工具包 (JDK) 的 Docker 镜像,Docker会从Docker Hub或其他配置的镜像仓库中拉取(下载)ascdc/jdk8镜像。构建这个 Docker 镜像时,会基于 ascdc/jdk8 镜像来创建。
  2. ADD *.jar app.jar

    • 这一行会将当前上下文(通常是 Dockerfile 所在的目录)中的所有 .jar 文件添加到 Docker 镜像的 / 目录下,并将它们重命名为 app.jar。如果上下文中有多个 .jar 文件,这会导致冲突,因为只有一个文件可以被重命名为 app.jar。通常,为了确保只有一个 .jar 文件被添加,开发者会确保在构建 Docker 镜像时只有一个可执行的 .jar 文件。
  3. ENTRYPOINT ["java","-jar","app.jar"]

    • 这一行定义了容器启动时要运行的命令。当从这个 Docker 镜像创建一个容器并启动它时,它会执行 java -jar app.jar 命令。这告诉 Java 虚拟机 (JVM) 运行 app.jar 文件中的 Java 应用。

创建Docker镜像

  运行命令 (这里要确保用户权限足够高,su root或配置权限),镜像名自己取,我这里取jx。

docker build -t jx . 

docker build -t jx . 是一个 Docker 命令,用于从当前目录(. 表示当前目录)的 Dockerfile 构建一个新的 Docker 镜像,并给这个镜像命名为 jx。

启动容器

利用刚创建名为jx的镜像启动一个容器

docker run -p 8080:8080 jx

docker run -p 8080:8080 test 是一个 Docker 命令,用于从名为 test 的镜像启动一个新的容器,并将容器的 8080 端口映射到宿主机的 8080 端口。

启动容器推荐使用如下命令

将SpringBoot应用挂到后台运行,并做端口映射,可以使用以下完整的Docker命令:

docker run -d -p <主机端口>:<容器端口> --name <容器名称> <镜像名称>

其中:

  • -d 表示让容器在后台运行。
  • -p 用于做端口映射,<主机端口> 是你主机上的端口号,<容器端口> 是容器内部的端口号。
  • --name 用于给容器指定一个名称,<容器名称> 是你希望给容器命名的名称。
  • <镜像名称> 是你的SpringBoot应用的Docker镜像名称。

例如,

镜像名称为jx,你希望将主机的8080端口映射到容器的8080端口,并给容器命名为rq01,那么完整的命令如下:

docker run -d -p 8080:8080 --name rq01 jx

这直接挂到后台运行了。

docker搭建mysql

用docker在linux上快速搭建一个mysql数据库

下载镜像

输入以下命令拉取最新版本的MySQL Docker镜像:

docker pull mysql

利用镜像创建容器

docker run --name my-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d mysql

创建一个名为"my-mysql"的容器,将宿主机上的3306端口与容器内的3306端口关联起来,同时设置root密码为"password"

积累:

-p 设置映射端口

-e 设置环境,可以设置多个如-e MYSQL_ROOT_PASSWORD=my-secret-pw -e MYSQL_DATABASE=mydb -e MYSQL_USER=myuser -e MYSQL_PASSWORD=myuserpw

-d 或 --detach 参数表示在后台运行容器 ,如-d mysql 表示后端运行镜像mysql

docker ps 命令来查看正在运行的容器,而容器的输出日志可以通过 docker logs 命令来查看。

例如,要查看 my-mysql 容器的日志,您可以运行:

docker logs 容器名
 

这时你会发现你可以用各种数据库客服端连接该数据库了

但是数据库没有任何东西,怎么办

创建初始化脚本

        首先,创建一个名为 init.sql 的文件,其中包含创建数据库和表的SQL语句。例如:

CREATE DATABASE IF NOT EXISTS mydb;
USE mydb;

CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE
);

        这个脚本会创建一个名为 mydb 的数据库,并在该数据库中创建一个名为 users 的表。

运行容器并传递初始化脚本

        接下来,使用 docker run 命令启动MySQL容器,并通过 --init-file 参数传递初始化脚本。但是,请注意,MySQL Docker镜像不直接支持 --init-file 参数。相反,您需要将初始化脚本放置在容器内部的 /docker-entrypoint-initdb.d/ 目录中,该目录在容器启动时会自动执行其中的脚本。

为此,可以将 init.sql 文件放置在当前目录下,然后使用以下命令运行容器:

docker run --name my-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d \
-v "$(pwd)/init.sql:/docker-entrypoint-initdb.d/init.sql" \
mysql:latest

  -v       参数用于将当前目录下的 init.sql 文件挂载到容器内部的 /docker-entrypoint-initdb.d/ 目录下。当容器首次启动时,MySQL会执行这个目录下的所有脚本。

现在你可在mysql客服端软件中看到你利用脚本创建的数据库和表。

连接到MySQL并验证

一旦容器启动并运行,您可以连接到MySQL服务器,使用root用户和密码 password,然后验证数据库和表是否已创建:

mysql -h localhost -u root -p

在MySQL提示符下,运行以下命令来验证:

SHOW DATABASES;
USE mydb;
SHOW TABLES;

这些命令应该显示 mydb 数据库以及 users 表。

现在,您已经成功地使用Docker部署了MySQL,并在容器启动时自动创建了数据库和表。

常用Docker命令

Docker中删除镜像、删除容器、启动和停止容器的命令如下:

  • 删除镜像:docker rmi 镜像ID。如果要删除正在被容器使用的镜像,需要先删除该容器,才能删除镜像。
  • 删除容器:docker rm 容器ID。如果要删除正在运行的容器,需要先停止该容器,才能删除容器。
  • 启动容器:docker start 容器ID
  • 停止容器:docker stop 容器ID
  • 启动Docker的命令是 systemctl start docker
  • 设置Docker开机启动的命令是 systemctl enable docker
  • 关闭Docker的命令是 systemctl stop docker

不要纠结。

知识是学不尽的,重点是要掌握快速运用知识解决问题的方法。

参考文献:

 这里只讲了部署项目本身,直接安装sql 、redis等等其它项目依赖的,可以看看

Docker部署springboot项目(保姆级文档)-优快云博客

Docker部署Java 项目_docker部署java项目-优快云博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值