内容简介:上次写过一篇用于复制文件,格式:示例:
上次写过一篇 使用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:
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
JavaScript Patterns
Stoyan Stefanov / O'Reilly Media, Inc. / 2010-09-21 / USD 29.99
What's the best approach for developing an application with JavaScript? This book helps you answer that question with numerous JavaScript coding patterns and best practices. If you're an experienced d......一起来看看 《JavaScript Patterns》 这本书的介绍吧!