网站首页 > java教程 正文
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> #查看容器日志
猜你喜欢
- 2025-03-11 实践一下,用IDEA自动化部署Docker镜像,并没有你想象中的那么难
- 2025-03-11 Java本地搭建宝塔部署实战Springboot酒店宾馆管理系统源码
- 2025-03-11 运维小白---centOS系统下部署基础项目
- 2025-03-11 使用arthas实时追踪docker容器上部署的Java程序的方法出入参
- 2025-03-11 Java项目本地部署宝塔搭建实战java中小医院管理系统源码
- 2025-03-11 Java项目本地部署宝塔搭建实战java外卖小程序源码
- 2025-03-11 Java本地搭建宝塔部署实战SSM房屋租赁系统源码
- 2025-03-11 Java本地搭建宝塔部署实战springboot仓库管理系统源码
- 2025-03-11 Tomcat热部署与热加载
- 2025-03-11 Kafka单机部署
你 发表评论:
欢迎- 最近发表
-
- Java常量定义防暴指南:从"杀马特"到"高富帅"的华丽转身
- Java接口设计原则与实践:优雅编程的艺术
- java 包管理、访问修饰符、static/final关键字
- Java工程师的代码规范与最佳实践:优雅代码的艺术
- 编写一个java程序(编写一个Java程序计算并输出1到n的阶乘)
- Mycat的搭建以及配置与启动(mycat部署)
- Weblogic 安装 -“不是有效的 JDK Java 主目录”解决办法
- SpringBoot打包部署解析:jar包的生成和结构
- 《Servlet》第05节:创建第一个Servlet程序(HelloSevlet)
- 你认为最简单的单例模式,东西还挺多
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)