GVKun编程网logo

Docker Springboot Webapp 包含的库(dockerfile springboot)

19

在这里,我们将给大家分享关于DockerSpringbootWebapp包含的库的知识,让您更了解dockerfilespringboot的本质,同时也会涉及到如何更有效地(五)SpringBoot与

在这里,我们将给大家分享关于Docker Springboot Webapp 包含的库的知识,让您更了解dockerfile springboot的本质,同时也会涉及到如何更有效地(五) SpringBoot 与 Docker、CKEditor 5 + SpringBoot实战(二):SpringBoot Application 环境搭建、Docker 化 springboot 项目、docker 部署Spring Boot:Docker化Spring Boot应用程序的内容。

本文目录一览:

Docker Springboot Webapp 包含的库(dockerfile springboot)

Docker Springboot Webapp 包含的库(dockerfile springboot)

如何解决Docker Springboot Webapp 包含的库?

我已经通过 Docker 将 Springboot jar 部署为 web 应用程序。这是我的 Dockerfile 的基本轮廓。

#
# Build App
#
FROM maven:3.6.3-openjdk-15-slim AS build

# copy Parent Project
copY src /home/app/src
copY pom.xml /home/app

RUN mvn -f /home/app/pom.xml clean package -DskipTests

#
# Deploy App
#
FROM openjdk:15-jdk-alpine
copY --from=build /home/app/my-app/target/my-app-rest-0.0.1-SNAPSHOT.jar /usr/local/lib/app.jar
ENTRYPOINT exec java -Djava.security.egd=file:/dev/./urandom -jar /usr/local/lib/app.jar

我最初在互联网上发现了一个类似于这个 Dockerfile 的模式,我以为我已经理解了其中的大部分内容,但是有一件事让我感到困惑:我的 app.jar 需要运行的所有依赖 jar 在哪里?我的项目正在运行和执行得很好,所以那些必须在我的容器中的某个地方。但是我已经搜索并搜索了但找不到任何依赖 jar 甚至我的 web 应用程序的 WEB-INF 目录。我知道我的实际应用程序 jar 位于 /usr/local/lib/ 中,但这就是我所能推断的全部内容。

依赖项/webapp 配置是否存在某些默认位置?有什么我可以添加到我的 Dockerfile 来定义它应该去哪里的东西吗?

解决方法

Spring Boot 将您所有的依赖项(jar)放在一个胖可执行的 jar 中,这是您传递到运行阶段的那个,也是您使用 java 命令运行的那个。

由于 jar 文件只是压缩档案,因此您可以使用解压缩查看其中的内容来提取它们:

docker cp <container-id>:/home/app/my-app/target/my-app-rest-0.0.1-SNAPSHOT.jar myjar.jar
unzip myjar.jar -d myjar
ls -al myjar/BOOT-INF/lib

您将获得 Spring Boot 应用程序依赖的所有 jar 的列表。

更多信息here和here

,

Maven 用于构建您的 .jar 包,而您只需将 .jar 包放入 docker 镜像并添加 java -jar ... 作为入口点。

请注意,Docker 强烈建议程序员将应用程序分离为单独的 Docker 映像。即使您可以同时使用 Maven 和 .jar,也不要这样做。

是否存在依赖项/webapp 配置的默认位置?

是的。这是我在工作中使用的 Dockerfile。您可以在开发机器上运行 Maven 命令,例如 cleanpackage,而不是在 Dockerfile 中运行。

FROM openjdk:8-jdk-alpine
# You want to change JDK version.

ADD target/*.jar app.jar
# You have to place this Dockerfile in the SAME directory with the target folder. Then this Dockerfile pulls whatever jar you have under target,renames it to app.jar and adds it to the build.

EXPOSE 9001
# You want to change this to whatever port your java app listens on.

ENTRYPOINT ["java","-jar","/app.jar"]
# Typical command you use to run .jar package but this time,you use it as the entrypoint.

获得 .jar 包后,cd 进入 Dockerfile 目录和 docker build .

(五) SpringBoot 与 Docker

(五) SpringBoot 与 Docker

1、简介

Docker 是一个开源的应用容器引擎;

Docker 支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像;

运行中的这个镜像称为容器,容器启动是非常快速的

2、核心概念

docker 主机 (Host): 安装了 Docker 程序的机器 (Docker 直接安装在操作系统之上);

docker 客户端 (Client): 连接 docker 主机进行操作;

docker 仓库 (Registry): 用来保存各种打包好的软件镜像;

docker 镜像 (Images): 软件打包好的镜像;放在 docker 仓库中;

docker 容器 (Container): 镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用;

使用 Docker 的步骤:

1)、安装 Docker

2)、去 Docker 仓库找到这个软件对应的镜像;

3)、使用 Docker 运行这个镜像,这个镜像就会生成一个 Docker 容器;

4)、对容器的启动停止就是对软件的启动停止

3、安装 Docker

1)、安装 linux 虚拟机

  1)、VMWare、VitualBox (安装);

  2)、导入虚拟机文件;

  3)、双击启动 linux 虚拟机;

  4)、使用客户端连接 linux 服务器进行命令操作;

  5)、设置虚拟机网络;

    桥接网络 ===> 选好网卡 ===> 接入网线

  6)、设置好网络之后使用命令重启虚拟机的网络

 

1 service network restart

 

  7)、查看 linux 的 ip 地址

1 ip addr

  8)、使用客户端连接

2)、在 linux 虚拟机上安装 docker

步骤:

 1、检查内核版本,必须是3.10及以上
 uname -r
 2、安装docker
 yum install docker
 3、输入y确认安装
 4、启动docker
 [root@localhost ~]# systemctl start docker
 [root@localhost ~]# docker -v
 Docker version 1.13.1, build dded712/1.13.1
5、开机启动docker
[root@localhost ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
6、停止docker
[root@localhost ~]# systemctl stop docker
[root@localhost ~]# docker info
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

 4、Docker 常用命令 & 操作

1)、镜像操作

操作 命令 说明 检索

docker search 关键字

eg:docker search redis

我们经常去 docker hub 上检索镜像的详细信息,如镜像的 TAG 拉取 docker pull 镜像名:tag :tag 是可选的,tag 表示标签,多为软件的版本,默认是 latest 列表 docker images 查看所有本地镜像 删除 docker rmi image-id 删除指定的本地镜像

 2)、容器操作

软件镜像 ---- 运行镜像 ---- 产生一个容器 (正在运行的软件);

步骤:

 

1、搜索镜像
[root@bogon ~]# docker search tomcat
2、拉取镜像
[root@bogon ~]# docker pull tomcat
3、根据镜像启动容器
docker run --name mytomcat -d tomcat:latest
4、docker ps  
查看运行中的容器
5、 停止运行中的容器
docker stop  容器的id
6、查看所有的容器
docker ps -a
7、启动容器
docker start 容器id
8、删除一个容器
 docker rm 容器id
9、启动一个做了端口映射的tomcat
[root@bogon~]# docker run -d -p 8888:8080 tomcat
-d:后台运行
-p: 将主机的端口映射到容器的一个端口    主机端口:容器内部的端口

10、为了演示简单关闭了linux的防火墙
service firewalld status ;查看防火墙状态
service firewalld stop:关闭防火墙
11、查看容器的日志
docker logs container-name/container-id

更多命令参看
https://docs.docker.com/engine/reference/commandline/docker/
可以参考每一个镜像的文档

  3)、安装 MySQL 示例

错误的启动

 

 1 [root@localhost ~]# docker run --name mysql01 -d mysql
 2 42f09819908bb72dd99ae19e792e0a5d03c48638421fa64cce5f8ba0f40f5846
 3 
 4 mysql退出了
 5 [root@localhost ~]# docker ps -a
 6 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                           PORTS               NAMES
 7 42f09819908b        mysql               "docker-entrypoint.sh"   34 seconds ago      Exited (1) 33 seconds ago                            mysql01
 8 538bde63e500        tomcat              "catalina.sh run"        About an hour ago   Exited (143) About an hour ago                       compassionate_
 9 goldstine
10 c4f1ac60b3fc        tomcat              "catalina.sh run"        About an hour ago   Exited (143) About an hour ago                       lonely_fermi
11 81ec743a5271        tomcat              "catalina.sh run"        About an hour ago   Exited (143) About an hour ago                       sick_ramanujan
12 
13 
14 //错误日志
15 [root@localhost ~]# docker logs 42f09819908b
16 error: database is uninitialized and password option is not specified 
17   You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD;这个三个参数必须指定一个

 

正确的启动

1 [root@localhost ~]# docker run --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
2 b874c56bec49fb43024b3805ab51e9097da779f2f572c22c695305dedd684c5f
3 [root@localhost ~]# docker ps
4 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
5 b874c56bec49        mysql               "docker-entrypoint.sh"   4 seconds ago       Up 3 seconds        3306/tcp            mysql01

做了端口映射

1 [root@localhost ~]# docker run -p 3306:3306 --name mysql02 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
2 ad10e4bc5c6a0f61cbad43898de71d366117d120e39db651844c0e73863b9434
3 [root@localhost ~]# docker ps
4 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
5 ad10e4bc5c6a        mysql               "docker-entrypoint.sh"   4 seconds ago       Up 2 seconds        0.0.0.0:3306->3306/tcp   mysql02

几个其他的高级操作

docker run --name mysql03 -v /conf/mysql:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
把主机的/conf/mysql文件夹挂载到 mysqldocker容器的/etc/mysql/conf.d文件夹里面
改mysql的配置文件就只需要把mysql配置文件放在自定义的文件夹下(/conf/mysql)

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
指定mysql的一些配置参数

 

CKEditor 5 + SpringBoot实战(二):SpringBoot Application 环境搭建

CKEditor 5 + SpringBoot实战(二):SpringBoot Application 环境搭建

在本系列的文章中,我将介绍如何在Spring Boot Application中使用CKEditor编辑器。介绍的内容包括基本环境的搭建,文件上传,SpringData JPA数据持久化,CKEditor5的安装,CKEditor图片上传,CKEditor插入视频,获取/设置CKEditor内容等。

项目源码

本系列文章的项目源码同步更新至码云 和 Github ,你可以任选其一下载源码到本地。项目地址如下:

  1. 码云:https://gitee.com/ramostear/CKEditor5-SpringBoot
  2. Github:https://github.com/ramostear/CKEditor5-SpringBoot

你也可以通过Git命令行工具下载项目源码,命令如下(二者任选其一):

git clone https://gitee.com/ramostear/CKEditor5-SpringBoot.git
git clone https://github.com/ramostear/CKEditor5-SpringBoot.git

需求分析

需求分析是项目开始的第一步,经过分析和思考,才能明确我们的设计目标。在本项目中,我们有如下的需求:

  1. 使用CKEditor5 Web编辑器在线编辑内容
  2. 在需要的时候,可以在编辑的内容中插入图片素材
  3. 除了能插入图片,还需要有插入视频的功能
  4. 将编辑好的内容保存到数据库
  5. 在需要的时候,可再次对数据库中存储的内容进行二次编辑
  6. 能在线浏览数据库中的内容
  7. 在必要的时候,需要对数据库中存储的内容进行删除(包括上传的图片)

经过整理,我们可提炼出这样几个核心功能:添加内容,编辑内容,删除内容,查询内容,上传图片,插入视频和删除图片。下面是项目的用例图,用例图能更直观的帮助我们理解项目需求。

项目依赖

通过分析,我们已经明确项目所要实现的功能。接下来,需要考虑项目的类型以及所需要的第三方依赖包和依赖包的管理方式。

首先,我们可以确定该项目是一个Web项目,第三方的依赖包可以通过Maven来进行管理。然后是确定项目所需的依赖包:

  1. Web项目,需要Spring MVC依赖包;
  2. 视图展现,需要Freemarker依赖包;
  3. 在线编辑内容,使用CKEditor5实现(JavaScript第三方库);
  4. 连接MySQL数据库,需要MySQL数据库驱动依赖包;
  5. 数据持久化,需要SpringData JPA依赖包;
  6. 数据库连接池管理,需要Alibaba Druid依赖包;
  7. 文件上传,需要commons-fileupload依赖包;
  8. JSON数据转换,需要Alibaba FastJSON依赖包。
提示:

在编码的过程中,为了防止一次性导入所有依赖包导致依赖包下载慢或下载失败,可根据开发进度,按需加入相关的依赖包。

创建项目

在开始创建项目之前,我默认你已经在本地机器上安装并配置好了JDK、Maven和MySQL。创建并初始化一个Java Web项目的最好方式是使用SpringBoot,我将使用IntelliJ IDEA提供的Spring Initializr创建SpringBoot应用程序。关于IDE的选择,在此不再赘述,IntelliJ IDEA或Eclipse创建SpringBoot应用程序的步骤大致相同。

IntelliJ IDEA创建SpringBoot Application

启动IntelliJ IDEA,依次点击 File > New > Project…按钮,如下图:

在弹出的New Project对话框中,选择“Spring Initializr”选项,然后将“Project SDK”修改为本机安装的SDK,接着点击“Next”进入项目元数据配置对话框。

紧接着,我们需要对项目的元数据进行设置,具体参数可更具自身情况进行调整,也可以与本教程保持一致,元数据设置完毕后,点击“Next”进入依赖配置对话框。

为了快速完成项目项目的创建和初始化工作,在一开始,我们只勾选Spring Web依赖,并将Spring Boot的版本调整到2.2.8,然后点击“Next”进入项目信息确认对话框。

在项目信息确认无误后,点击“Finish”按钮完成项目的创建。

最后,IntelliJ IDEA会弹出一个询问框,你可以选择在当前窗口或新窗口打开项目,根据个人习惯进行选择。选择完毕后,稍等片刻,IntelliJ IDEA将自动从Spring上下载项目基础源码包,并完成项目初始化工作。

打开项目后,请在Settings中找到Maven配置项,并检查其配置是否为本地安装的Maven,如下图:

设置完成后,点击窗口右下角弹框中的“Enable Auto Import”链接,让Maven重新导入项目的依赖(若已设置好Maven,请忽略该步骤),如下图:

下面是初始化完成后的项目工程结构:

至此,整个项目的创建和初始化工作已完成。Ckeditor5SpringBootApplication.java为项目的主类,接下来,我们将通过改类来启动项目,验证项目是否正常可用。

启动项目

在“com.ramostear.ckeditor”包中找到并打开Ckeditor5SpringbootApplication.java类,我们将通过此类来启动项目。

如上图所示,在代码编辑界面中,你可以选择点击① 、②和 ③处其中任意一个三角图标来启动项目。当项目启动成功后,会在控制台输出如下信息:

你可以在上图① 处看到,应用的端口号为“8080”(默认端口号)。最后,我们在浏览器中输入如下地址,以验证SpringBoot Application是否正常可用。

http://localhost:8080

如上图所示,若初始化的项目无任何问题,访问http://localhost:8080,SpringBoot Application将返回一个“Whitelable Error Page”页面。至此,SpringBoot Application环境搭建工作完成。

本章小结

本章详细介绍了在IntelliJ IDEA中创建并初始化一个SpringBoot Application的详细过程。为初识IntelliJ IDEA和SpringBoot的读者提供一个参考。你可以访问下面的地址,下载该项目的所有源代码:

  1. 码云:https://gitee.com/ramostear/CKEditor5-SpringBoot
  2. Github:https://github.com/ramostear/CKEditor5-SpringBoot

在下一章节中,我将介绍内容实体,持久化接口,业务逻辑接口及其实现类,和控制器的设计和实现过程。

Docker 化 springboot 项目

Docker 化 springboot 项目

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

	<modelVersion>4.0.0</modelVersion>

	<groupId>com.lnas01</groupId>
	<artifactId>docker-spring-boot</artifactId>
	<packaging>jar</packaging>
	<version>1.0.0</version>
	<name>docker-spring-boot</name>
	<description>Getting started with Spring Boot and Docker</description>
	
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.3.RELEASE</version>
        <relativePath/>
    </parent>

	<dependencies>
	    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
	</dependencies>

	<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
    <!-- tag::plugin[] -->
			<plugin>
				<groupId>com.spotify</groupId>
				<artifactId>docker-maven-plugin</artifactId>
				<version>0.4.3</version>
				<configuration>
					<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
					<dockerDirectory>src/main/docker</dockerDirectory>
					<resources>
						<resource>
							<targetPath>/</targetPath>
							<directory>${project.build.directory}</directory>
							<include>${project.build.finalName}.jar</include>
						</resource>
					</resources>
				</configuration>
			</plugin>
    <!-- end::plugin[] -->
        </plugins>
	</build>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<docker.image.prefix>lnas01</docker.image.prefix>
		<spring.boot.version>1.3.3.RELEASE</spring.boot.version>
	</properties>
</project>

  

dockerfilesrc/main/docker/Dockerfile

 
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD docker-spring-boot-1.0.0.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

  

构建镜像:

mvn package docker:build

  

运行镜像:

docker run -p 8080:8080 -t lnas01/docker-spring-boot

  

docker 部署Spring Boot:Docker化Spring Boot应用程序

docker 部署Spring Boot:Docker化Spring Boot应用程序

第一章

1.创建项目存放目录

mkdir /root/sproot -p

2.准备好Spring Boot应用程序 jar 包

testrest.jar

第二章

1. 安装docker 

 

所有节点执行:

 

setenforce 0

iptables -F

iptables -t nat -F

iptables -I FORWARD -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT  

iptables -I INPUT -s 192.168.0.0/24 -j ACCEPT

 

开启路由转发

echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
echo 1 > /proc/sys/net/bridge/bridge-nf-call-ip6tables

 

安装Docker

# 安装依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加Docker软件包源

yum-config-manager \

    --add-repo \

    https://download.docker.com/linux/centos/docker-ce.repo

# 更新yum包索引

yum makecache fast

# 安装Docker CE

yum install docker-ce

设置默认从中国镜像仓库中拉取:

# vi /etc/docker/daemon.json

{

  "registry-mirrors": [ "https://registry.docker-cn.com"]

}

# systemctl start docker

# systemctl enable docker

测试:

# docker info

第三章

1.创建Dockerfile 文件

 1 # Add a volume pointing to /tmp
 2 VOLUME /tmp
 3 
 4 # Make port 8080 available to the world outside this container
 5 EXPOSE 8080
 6 
 7 # The application''s jar file
 8 #ARG JAR_FILE=/root/sproot/testrest.jar
 9 
10 # Add the application''s jar to the container
11 ADD testrest.jar websocket-demo.jar
12 
13 # Run the jar file 
14 ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/websocket-demo.jar"]

2.构建dockerfile 镜像文件

现在我们已经定义了Dockerfile,让我们为我们的应用程序构建一个docker镜像。从项目的根目录键入以下命令来构建docker 镜像 -

$ docker build -t spring-boot-websocket-chat-demo .

 

第四章

1.运行docker镜像

[root@docker01 sproot]# docker run -d -p 5000:8080 spring-boot-websocket-chat-demo

 

 

第五章 

1.访问

 

 

关于Docker Springboot Webapp 包含的库dockerfile springboot的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于(五) SpringBoot 与 Docker、CKEditor 5 + SpringBoot实战(二):SpringBoot Application 环境搭建、Docker 化 springboot 项目、docker 部署Spring Boot:Docker化Spring Boot应用程序的相关知识,请在本站寻找。

本文标签: