内容简介:上次写过一篇用于复制文件,格式:示例:
上次写过一篇 使用Maven插件为SpringBoot应用构建 Docker 镜像 ,讲述了通过docker-maven-plugin来构建docker镜像的方式,此种方式需要依赖自建的Registry镜像仓库。本文将讲述另一种方式,使用Dockerfile来构建docker镜像,此种方式不需要依赖自建的镜像仓库,只需要应用的jar包和一个Dockerfile文件即可。
Dockerfile常用指令
ADD
用于复制文件,格式:
ADD <src> <dest> 复制代码
示例:
# 将当前目录下的mall-tiny-docker-file.jar包复制到docker容器的/目录下 ADD mall-tiny-docker-file.jar /mall-tiny-docker-file.jar 复制代码
ENTRYPOINT
指定docker容器启动时执行的命令,格式:
ENTRYPOINT ["executable", "param1","param2"...] 复制代码
示例:
# 指定docker容器启动时运行jar包 ENTRYPOINT ["java", "-jar","/mall-tiny-docker-file.jar"] 复制代码
ENV
用于设置环境变量,格式:
ENV <key> <value> 复制代码
示例:
# mysql运行时设置root密码 ENV MYSQL_ROOT_PASSWORD root 复制代码
EXPOSE
声明需要暴露的端口(只声明不会打开端口),格式:
EXPOSE <port1> <port2> ... 复制代码
示例:
# 声明服务运行在8080端口 EXPOSE 8080 复制代码
FROM
指定所需依赖的基础镜像,格式:
FROM <image>:<tag> 复制代码
示例:
# 该镜像需要依赖的 java 8的镜像 FROM java:8 复制代码
MAINTAINER
指定维护者的名字,格式:
MAINTAINER <name> 复制代码
示例:
MAINTAINER macrozheng 复制代码
RUN
在容器构建过程中执行的命令,我们可以用该命令自定义容器的行为,比如安装一些软件,创建一些文件等,格式:
RUN <command> RUN ["executable", "param1","param2"...] 复制代码
示例:
# 在容器构建过程中需要在/目录下创建一个mall-tiny-docker-file.jar文件 RUN bash -c 'touch /mall-tiny-docker-file.jar' 复制代码
使用Dockerfile构建SpringBoot应用镜像
编写Dockerfile文件
# 该镜像需要依赖的基础镜像 FROM java:8 # 将当前目录下的jar包复制到docker容器的/目录下 ADD mall-tiny-docker-file-0.0.1-SNAPSHOT.jar /mall-tiny-docker-file.jar # 运行过程中创建一个mall-tiny-docker-file.jar文件 RUN bash -c 'touch /mall-tiny-docker-file.jar' # 声明服务运行在8080端口 EXPOSE 8080 # 指定docker容器启动时运行jar包 ENTRYPOINT ["java", "-jar","/mall-tiny-docker-file.jar"] # 指定维护者的名字 MAINTAINER macrozheng 复制代码
使用maven打包应用
在IDEA中双击package命令进行打包:
打包成功后展示:
[INFO] --- spring-boot-maven-plugin:2.1.3.RELEASE:repackage (repackage) @ mall-tiny-docker-file --- [INFO] Replacing main artifact with repackaged archive [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 30.749 s [INFO] Finished at: 2019-06-16T14:11:07+08:00 [INFO] Final Memory: 43M/306M [INFO] ------------------------------------------------------------------------ 复制代码
将应用jar包及Dockerfile文件上传到 linux 服务器:
在Linux上构建docker镜像
在Dockerfile所在目录执行以下命令:
# -t 表示指定镜像仓库名称/镜像名称:镜像标签 .表示使用当前目录下的Dockerfile docker build -t mall-tiny/mall-tiny-docker-file:0.0.1-SNAPSHOT . 复制代码
输出如下信息:
Sending build context to Docker daemon 36.37MB Step 1/5 : FROM java:8 ---> d23bdf5b1b1b Step 2/5 : ADD mall-tiny-docker-file-0.0.1-SNAPSHOT.jar /mall-tiny-docker-file.jar ---> c920c9e9d045 Step 3/5 : RUN bash -c 'touch /mall-tiny-docker-file.jar' ---> Running in 55506f517f19 Removing intermediate container 55506f517f19 ---> 0727eded66dc Step 4/5 : EXPOSE 8080 ---> Running in d67a5f50aa7d Removing intermediate container d67a5f50aa7d ---> 1b8b4506eb2d Step 5/5 : ENTRYPOINT ["java", "-jar","/mall-tiny-docker-file.jar"] ---> Running in 0c5bf61a0032 Removing intermediate container 0c5bf61a0032 ---> c3614dad21b7 Successfully built c3614dad21b7 Successfully tagged mall-tiny/mall-tiny-docker-file:0.0.1-SNAPSHOT 复制代码
查看docker镜像:
运行 mysql 服务并设置
1.使用docker命令启动:
docker run -p 3306:3306 --name mysql \ -v /mydata/mysql/log:/var/log/mysql \ -v /mydata/mysql/data:/var/lib/mysql \ -v /mydata/mysql/conf:/etc/mysql \ -e MYSQL_ROOT_PASSWORD=root \ -d mysql:5.7 复制代码
2.进入运行mysql的docker容器:
docker exec -it mysql /bin/bash 复制代码
3.使用mysql命令打开客户端:
mysql -uroot -proot --default-character-set=utf8 复制代码
4.修改root帐号的权限,使得任何ip都能访问:
grant all privileges on *.* to 'root'@'%' 复制代码
5.创建mall数据库:
create database mall character set utf8 复制代码
6.将mall.sql文件拷贝到mysql容器的/目录下:
docker cp /mydata/mall.sql mysql:/ 复制代码
7.将 sql 文件导入到数据库:
use mall; source /mall.sql; 复制代码
运行mall-tiny-docker-file应用
docker run -p 8080:8080 --name mall-tiny-docker-file \ --link mysql:db \ -v /etc/localtime:/etc/localtime \ -v /mydata/app/mall-tiny-docker-file/logs:/var/logs \ -d mall-tiny/mall-tiny-docker-file:0.0.1-SNAPSHOT 复制代码
访问接口文档地址http://192.168.3.101:8080/swagger-ui.html:
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 不要轻易使用 Alpine 镜像来构建 Docker 镜像,有坑!
- 根据Dockerfile构建镜像
- 构建go应用镜像
- 使用Dockerfile构建镜像
- Docker 构建镜像
- 利用Makisu构建容器镜像
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。