使用Dockerfile为SpringBoot应用构建Docker镜像

栏目: Java · 发布时间: 7年前

内容简介:上次写过一篇用于复制文件,格式:示例:

上次写过一篇 使用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命令进行打包:

使用Dockerfile为SpringBoot应用构建Docker镜像

打包成功后展示:

[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 服务器:

使用Dockerfile为SpringBoot应用构建Docker镜像
使用Dockerfile为SpringBoot应用构建Docker镜像

在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镜像:

使用Dockerfile为SpringBoot应用构建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:

使用Dockerfile为SpringBoot应用构建Docker镜像

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

JavaScript Patterns

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》 这本书的介绍吧!

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具