Dockerfile部署Java项目(docker部署java应用)
qiyuwang 2025-04-30 19:02 7 浏览 0 评论
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> #查看容器日志
相关推荐
- 基于Docker方式安装与部署Camunda流程引擎
-
1Camunda简介官网:https://docs.camunda.org/manual/7.19/installation/docker/Camunda是一个轻量级、开源且高度灵活的工作流和决策自...
- 宝塔Linux面板如何部署Java项目?(宝塔面板 linux)
-
通过宝塔面板部署Java还是很方便的,至少不需要自己输入tomcat之类的安装命令了。在部署java项目前,我还是先说下目前的系统环境,如果和我的系统环境不一样,导致部署不成功,那你可能需要去找其他资...
- 浪潮服务器如何用IPMI安装Linux系统
-
【注意事项】此处以浪潮服务器为例进行演示所需使用的软件:Chrome浏览器个人PC中需要预先安装java,推荐使用jdk-8u181-windows-x64.exe【操作步骤】1、在服务器的BIOS中...
- Centos7环境Hadoop3集群搭建(hadoop集群环境搭建实验报告)
-
由于项目需要存储历史业务数据,经过评估数据量会达到100亿以上,在原有mongodb集群和ES集群基础上,需要搭建Hbase集群进行调研,所以首先总结一下Hadoop集群的搭建过程。一、三个节点的集群...
- Hadoop高可用集群搭建及API调用(hadoop高可用原理)
-
NameNodeHA背景在Hadoop1中NameNode存在一个单点故障问题,如果NameNode所在的机器发生故障,整个集群就将不可用(Hadoop1中虽然有个SecorndaryNameNo...
- 使用Wordpress搭建一个属于自己的网站
-
现在开源的博客很多,但是考虑到wordpress对网站的seo做的很好,插件也多。并且全世界流量排名前1000万的网站有33.4%是用Wordpress搭建的!所以尝试用Wordpress搭建一个网站...
- Centos 安装 Jenkins(centos 安装ssh)
-
1、Java安装查看系统是否已安装Javayumlistinstalled|grepjava...
- Java教程:gitlab-使用入门(java中的git)
-
1导读本教程主要讲解了GitLab在项目的环境搭建和基本的使用,可以帮助大家在企业中能够自主搭建GitLab服务,并且可以GitLab中的组、权限、项目自主操作...
- Dockerfile部署Java项目(docker部署java应用)
-
1、概述本文主要会简单介绍什么是Docker,什么是Dockerfile,如何安装Docker,Dockerfile如何编写,如何通过Dockerfile安装jar包并外置yaml文件以及如何通过do...
- 如何在Eclipse中搭建Zabbix源码的调试和开发环境
-
Zabbix是一款非常优秀的企业级软件,被设计用于对数万台服务器、虚拟机和网络设备的数百万个监控项进行实时监控。Zabbix是开放源码和免费的,这就意味着当出现bug时,我们可以很方便地通过调试源码来...
- Java路径-02-Java环境配置(java环境搭建及配置教程)
-
1Window环境配置1.1下载...
- 35.Centos中安装python和web.py框架
-
文章目录前言1.Centos7python:2.Centos8python:3.进行下载web.py框架然后应用:4.安装好之后进行验证:5.总结:前言...
- 《我的世界》服务器搭建(我的世界服务器如何搭建)
-
1.CentOS7环境1.1更改YUM源#下载YUM源文件curl-o/etc/yum.repos.d/CentOS-Base.repohttps://mirrors.aliyun.com...
- CentOS 7 升级 GCC 版本(centos7.4升级7.5)
-
1.GCC工具介绍GCC编译器:...
- Linux安装Nginx详细教程(linux安装配置nginx)
-
环境准备1.因为Nginx依赖于gcc的编译环境,所以,需要安装编译环境来使Nginx能够编译起来。命令:yuminstallgcc-c++显示完毕,表示安装完成:2.Nginx的http模块需要...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- 基于Docker方式安装与部署Camunda流程引擎
- 宝塔Linux面板如何部署Java项目?(宝塔面板 linux)
- 浪潮服务器如何用IPMI安装Linux系统
- Centos7环境Hadoop3集群搭建(hadoop集群环境搭建实验报告)
- Hadoop高可用集群搭建及API调用(hadoop高可用原理)
- 使用Wordpress搭建一个属于自己的网站
- Centos 安装 Jenkins(centos 安装ssh)
- Java教程:gitlab-使用入门(java中的git)
- Dockerfile部署Java项目(docker部署java应用)
- 如何在Eclipse中搭建Zabbix源码的调试和开发环境
- 标签列表
-
- navicat无法连接mysql服务器 (65)
- 下横线怎么打 (71)
- flash插件怎么安装 (60)
- lol体验服怎么进 (66)
- ae插件怎么安装 (62)
- yum卸载 (75)
- .key文件 (63)
- cad一打开就致命错误是怎么回事 (61)
- rpm文件怎么安装 (66)
- linux取消挂载 (81)
- ie代理配置错误 (61)
- ajax error (67)
- centos7 重启网络 (67)
- centos6下载 (58)
- mysql 外网访问权限 (69)
- centos查看内核版本 (61)
- ps错误16 (66)
- nodejs读取json文件 (64)
- centos7 1810 (59)
- 加载com加载项时运行错误 (67)
- php打乱数组顺序 (68)
- cad安装失败怎么解决 (58)
- 因文件头错误而不能打开怎么解决 (68)
- js判断字符串为空 (62)
- centos查看端口 (64)