文章目录

  • linux下jdk的安装和docker打包运行镜像
  • 1、jdk安装
  • 添加下面内容
  • 2、nohup安装
  • 2.1、创建springboot项目
  • 2.2、IDEA+Spring Cloud+Maven模块化项目打包
  • 3、服务器后台启动java项目
  • linux下
  • win下
  • 4、docker构建并运行镜像
  • 4.1、编写Dockerfile
  • 4.2、docker构建镜像
  • 4.3、运行镜像
  • 4.4、访问应用
  • 4.5、查看容器运行日志
  • 4.6、firewall防火墙开放端口
  • 删除docker镜像
  • 5、分享镜像
  • 5.1、登录docker.hub仓库
  • 5.2、重命名
  • 5.3、推送镜像到docker.hub仓库
  • 5.6、下载镜像


linux下jdk的安装和docker打包运行镜像

1、jdk安装

https://www.oracle.com/java/technologies/downloads/#java8

从官网上下载linux版本的JDK

JDK下载地址

Linux 打包系统为基础docker镜像 linux系统打包成镜像_linux

通过ftp或者rz命令上传到linux

Linux 打包系统为基础docker镜像 linux系统打包成镜像_docker_02

我这里需要把JDK安装在/usr/local目录下,在/usr/local下新建文件加java

mkdir /usr/local/java

tar命令解压JDK包,解压地址是 /usr/local/java

tar -zxvf jdk-8u311-linux-x64.tar.gz 

得到文件:jdk1.8.0_311

接下来配置环境变量

vim命令打开/etc/profile

vim /etc/profile

添加下面内容

#Set Java_Environment
export JAVA_HOME=/usr/local/java/jdk1.8.0_311
export JRE_HOME=/usr/local/java/jdk1.8.0_311/jre
export CLASSPATH=.:$JAVA_HOME/lib$:JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin/$JAVA_HOME:$PATH

Linux 打包系统为基础docker镜像 linux系统打包成镜像_java_03

加载环境变量

source /etc/profile

验证是否安装成功

java -version

Linux 打包系统为基础docker镜像 linux系统打包成镜像_java_04

Linux 打包系统为基础docker镜像 linux系统打包成镜像_linux_05

成功!

2、nohup安装

解决:Linux下-bash: nohup: command not found或者bash: nohup: 未找到命令的问题

首先,没有发现nohup,先安装

yum install coreutils

其次,如果已经安装 ,查看本地是否有,查看nohup具体位置(注意:nohup的字母不要打错,之前就是因为打成了“nohub”而浪费了很多时间的

which nohup

Linux 打包系统为基础docker镜像 linux系统打包成镜像_linux_06


再次,将具体位置进行配置

vim ~/.bash_profile

Linux 打包系统为基础docker镜像 linux系统打包成镜像_linux_07


然后如下图所示,在环境变量PATH后面加上:usr/bin

Linux 打包系统为基础docker镜像 linux系统打包成镜像_java_08


然后,保存,刷新刷新生效

:wq

source ~/.bash_profile

最后,进行验证

nohup --version

Linux 打包系统为基础docker镜像 linux系统打包成镜像_docker_09

2.1、创建springboot项目

在spring-boot项目中得用spring-boot的打包插件

这是spring-boot的打包插件

pom.xml

<!--打包插件-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

2.2、IDEA+Spring Cloud+Maven模块化项目打包

背景:采用Spring Cloud框架搭建了一个项目,里面包含多个微服务,其中项目A依赖项目B,项目B里面是公共类(model、utils等)

1.B项目pom不能引入spring-boot-maven-plugin插件

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
		</plugin>
	</plugins>
</build>

spring-boot-maven-plugin打包出来的jar是不可依赖的,这个插件会在Maven的package后进行二次打包,目的为了生成可执行jar包,正是因为产生了可执行jar包,所以A项目打包时就找不到B项目的类。

2.第一次打包,要在父工程打包,本次是将父工程中的modules打成jar包,所以这些modules不能引入spring-boot-maven-plugin插件。

Linux 打包系统为基础docker镜像 linux系统打包成镜像_docker_10

2.第二次打包,打包基础服务模块,在微服务模块中打包

Linux 打包系统为基础docker镜像 linux系统打包成镜像_jar_11

打包成功!

3、服务器后台启动java项目

linux下

1查看当前jar的pid

ps -ef|grep jar包名

2.终止当前jar

kill -9 pid

3、启动指定项目

nohup java -jar jar包名 --server.port=指定端口号  > 日志文件.log 2>&1 &

&表示后台运行

比如我的

nohup java -jar demo1-0.0.1-SNAPSHOT.jar > /mydata/docker-file/logs/demo1-1239.log 2>&1 &

nohup 和 & 是保证后台运行不终止的意思,2>&1是将错误输出定位到左边的文件中

4、查看后台启动日志

tail -f /mydata/docker-file/logs/demo1-1239.log

win下

1查看当前jar的pid

jps

2.终止当前jar

taskkill /pid  12345 -f

3.启动指定项目

@echo off

start javaw -jar  D:\JavaApp\znzs_test\law_snapshot.jar

exit

4、docker构建并运行镜像

4.1、编写Dockerfile

vim Dockerfile
FROM openjdk:8-jdk-slim
LABEL maintainer=demo1-test

COPY target/*.jar  /app.jar

ENTRYPOINT ["java","-jar","/app.jar"]

target目录下

demo1-0.0.1-SNAPSHOT.jar

把Dockerfile和target目录上传linux服务器

Linux 打包系统为基础docker镜像 linux系统打包成镜像_linux_12

4.2、docker构建镜像

注意: -t 全称为 -tag

docker build -t java-demo:v1.0 -f Dockerfile
  1. -f Dockerfile可以省略
  2. java-demo:v1.0任意可以取名
  3. 末尾的" . "表示在当前目录执行build命令
#用这个
docker build -t java-demo:v1.0 .

查看镜像是否构建成功

docker images

Linux 打包系统为基础docker镜像 linux系统打包成镜像_jar_13

4.3、运行镜像

docker run -d -p 8080:8080 java-demo:v1.0

#或者随便指定一个名称: --name myjava-app

docker run -d -p 8080:8080 --name myjava-app java-demo:v1.0

-d表示后台运行,-p 指定端口,8080:8080 表示从机器的8080映射到 ==> java的8080

Linux 打包系统为基础docker镜像 linux系统打包成镜像_jar_14

4.4、访问应用

http://192.168.66.30:8080/hello

Linux 打包系统为基础docker镜像 linux系统打包成镜像_java_15

4.5、查看容器运行日志

1、

#查看容器id
docker ps

2、

#根据容器id查看容器运行日志
docker logs CONTAINER ID
#根据容器id查看容器运行的全部日志,日志持续更新
docker logs -f CONTAINER ID

Linux 打包系统为基础docker镜像 linux系统打包成镜像_jar_16

4.6、firewall防火墙开放端口

如果访问不了应用,就查看防火墙端口是否开放

查看防火墙状态

systemctl status firewalld

开启防火墙

systemctl start firewalld.service

添加端口

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

重启防火墙

systemctl restart firewalld.service

查看所有开放的端口

firewall-cmd --list-ports

关闭防火墙

systemctl stop firewalld.service

删除docker镜像

如果出错,想重新构建镜像,可以先删除docker镜像,再重新构建!

1、

docker ps -a

Linux 打包系统为基础docker镜像 linux系统打包成镜像_docker_17

2、

docker rm CONTAINER ID

3、

docker images

Linux 打包系统为基础docker镜像 linux系统打包成镜像_java_18

![image-2022031515

4、

docker rmi IMAGE ID

5、分享镜像

分享镜像给其他新的服务器

5.1、登录docker.hub仓库

docker login

5.2、重命名

给原来的镜像起一个新的名(一定得加前缀)

docker tag 名字 前缀/名字
docker tag java-demo:v1.0 xb1314d/java-demo:v1.0

#注意: 前缀一定得是自己得账号名,否则推送会失败

5.3、推送镜像到docker.hub仓库

docker push xb1314d/java-demo:v1.0

Linux 打包系统为基础docker镜像 linux系统打包成镜像_linux_19

登录docker.hub仓库查看

https://registry.hub.docker.com/

https://hub.docker.com/repositories

Linux 打包系统为基础docker镜像 linux系统打包成镜像_linux_20

镜像推送成功 !

5.6、下载镜像

这个时候就可以从其他服务器下载这个镜像了

登录docker.hub仓库

docker login

下载镜像

docker pull xb1314d/java-demo:v1.0