当前位置:首页 > 技术分析 > 正文内容

Dockerfile部署Java项目_docker部署java应用

ruisui884个月前 (02-11)技术分析27

1、概述

本文主要会简单介绍什么是Docker,什么是Dockerfile,如何安装Docker,Dockerfile如何编写,如何通过Dockerfile安装jar包并外置yaml文件以及如何通过dockerfile安装mysql数据库并初始化,其间会穿插介绍一些常用的Docker命令。

2、Docker及Dockerfile简介

什么是docker, docker是一个开源的应用容器引擎,基于go语言开发,遵循apache2.0协议开源。 docker可以让开发者打包应用以及依赖包到一个容器中,然后可以发布到linux服务器。该容器是轻量级、可移植的,它使用沙箱机制,相互之间没有接口,并且开销很低。

那么,什么是Dockerfile呢,Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了构建镜像所需的指令和说明。

3、部署

3.1、Docker的安装

#安装环境:centos7

#使用官方脚本自动安装

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

3.2、Dockerfile编写

3.2.1、Jar项目的Dockerfile编写

#拉取一个jdk1.8版本的docker镜像

FROM openjdk:8-jdk

# 将项目jar包添加到容器

ADD test.jar test.jar

# 将外部配置文件复制到容器

COPY ./config /tmp/config

# ENTRYPOINT 执行项目test.jar及外部配置文件

ENTRYPOINT ["java", "-jar", "test.jar","--spring.config.location=/tmp/config/application.yaml"]

3.2.2、Mysql项目的Dockerfile编写

#拉取一个mysql5.7版本的docker镜像

FROM mysql:5.7

#将初始化的sql文件复制到docker容器内/tmp/sql

COPY ./sql /tmp/sql

#将tmp/sql中所有的sql文件复制到
/docker-entrypoint-initdb.d

RUN mv /tmp/sql/*.sql /docker-entrypoint-initdb.d

#删除临时文件夹

RUN rm -rf /tmp/sql

3.3、部署文件目录

#目录及文件结构

deploy

--jar #jar包相关文件目录

----test.jar

----Dockerfile #上述jar对应的Dockerfile,注意名字的大小写

----config #yaml配置文件目录

------application.yaml #java项目的配置文件

--mysql #mysql相关文件目录

----Dockerfile #上述mysql对应的Dockerfile,注意名字的大小写

----sql

------test.sql #数据库初始化sql,包括数据库创建,表创建,表数据初始化等

3.4、部署

#通过ftp上传上述包至centos指定目录中,例如上传到/usr/local/tools

cd /usr/local/tools

#进入部署包目录

cd deploy

#先安装mysql

cd mysql

#根据dockerfile构建docker镜像,其中 test_mysql 是镜像名

docker build -t test_mysql .

#查看镜像,会发现多了test_mysql镜像

docker images

#运行mysql镜像 ,docker会执行初始化sql文件对mysql数据库进行初始化

#其中MYSQL_ROOT_PASSWORD为mysql密码,可根据需要设置

#本文部署均使用docker容器的内网地址,所以不影射对外端口,

#若需要隐射可以再命令加 -p 3306:3306,即把容器的3306隐射到本机的3306端口

docker run -it -d -e MYSQL_ROOT_PASSWORD=123456 --name test_mysql test_mysql

#查看容器,docker ps查询正在运行的容器

#若查询不到,则使用docker ps -a查询所有容器,并查看日志查找运行失败原因

docker ps

####至此,mysql容器已经启动可

#安装jar包对应的容器

cd ../jar

#进入config目录,配置yaml文件

cd config

#查询mysql容器的ip

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器名或id

#修改mysql参数中的ip为mysql容器ip,对应spring.datasource.url

#修改mysql参数中的密码为mysql容器启动时设置的密码,对应
spring.datasource.password

vi application.yaml

#根据dockerfile构建docker镜像,其中 test_java 是镜像名

docker build -t test_java .

#启动java项目,映射8080端口

docker run -it -d -p 8080:8080--name test_java test_java

#查看容器,docker ps查询正在运行的容器

#若查询不到,则使用docker ps -a查询所有容器,并查看日志查找运行失败原因

docker ps

######至此, 可以通过centos对应的ip访问到java接口了。

#可以通过以下命令对容器进行操作

docker start <容器 ID> #启动容器

docker stop <容器 ID> #关闭容器

docker exec -it <容器 ID> /bin/bash #进入容器

docker rm -f <容器 ID> #删除容器,删除前需要先stop容器

docker logs -f <容器 ID> #查看容器日志

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/1890.html

标签: centos java
分享给朋友:

“Dockerfile部署Java项目_docker部署java应用” 的相关文章

抖音 Android 性能优化系列:启动优化实践

启动性能是 APP 使用体验的门面,启动过程耗时较长很可能使用户削减使用 APP 的兴趣,抖音通过对启动性能做劣化实验也验证了其对于业务指标有显著影响。抖音有数亿的日活,启动耗时几百毫秒的增长就可能带来成千上万用户的留存缩减,因此,启动性能的优化成为了抖音 Android 基础技术团队在体验优化方向...

Excel中的FILTER函数详细介绍及使用示例

在Excel中处理大量数据时,经常需要根据特定条件筛选出符合条件的数据行或列。这正是Excel的FILTER函数发挥作用的地方。FILTER函数是Excel中一个非常强大的工具,它可以基于一个或多个条件动态地过滤数据,使数据分析和报告制作变得更加高效和准确。本文将详细介绍FILTER函数的用法,并提...

SpringBoot2.X+Vue+UniAPP,全栈开发医疗小程序

//xia仔のke:chaoxingit.com/208/全栈开发医疗小程序:利用Spring Boot 2.X、Vue和UniApp在当今数字化时代,医疗行业也在不断地迈向信息化和智能化的方向。开发一款医疗小程序,能够为用户提供便捷的医疗服务和信息查询,为医疗机构提供高效的管理和服务渠道。本文将介...

vue.js 双向绑定如何理解,有什么好处!#云南小程序开发

Vue.js 的双向数据绑定是借助于 JavaScript 的一些特性,如对象的属性 getter 和 setter 以及 Vue 的依赖追踪系统实现的。简单来说,双向数据绑定就是数据与视图间的双向通信,也就是说数据的改变会马上反映到视图中,视图的改变也会立刻改变数据。具体来说,当你改变了数据时,视...

千智云低代码平台 v2.0.6发布「平台升级」

【平台简介】千智云低代码应用平台是一款低代码开发+低代码PaaS+SaaS应用中台为一体的应用平台。平台提供了多种应用场景功能及应用组件,满足各种应用的基本实现,可以使用低代码开发的方式,定制化的开发软件项目,并使用平台提供的各种功能,提供了大多数业务场景的支持。也可以将开发的应用发布到平台,成为S...

面试题:同步和异步的区别

作者:雅克的一府来源:http://www.52rd.com/Blog/Detail_RD.Blog_imjacob_4832.html答案一:1.异步传输 通常,异步传输是以字符为传输单位,每个字符都要附加 1 位起始位和 1 位停止位,以标记一个字符的开始和结束,并以此实现数据传输同步。所谓异步...