思考集结处

vuePress-theme-reco 思考集结处    2024
思考集结处 思考集结处

Choose mode

  • dark
  • auto
  • light
首页
标签
分类
  • AI
  • Docker
  • 分布式事务
  • 文件存储
  • 框架
  • Spring
  • java
  • 其他
  • 搜索引擎
  • 源码
  • 网站
Java
网站
容器技术
搜索引擎
分布式事务
源码系列
框架系列
文件存储
AI
其他
GitHub
author-avatar

思考集结处

43

文章

18

标签

首页
标签
分类
  • AI
  • Docker
  • 分布式事务
  • 文件存储
  • 框架
  • Spring
  • java
  • 其他
  • 搜索引擎
  • 源码
  • 网站
Java
网站
容器技术
搜索引擎
分布式事务
源码系列
框架系列
文件存储
AI
其他
GitHub
  • 容器技术合集
  • Docker 介绍
  • Dockerfile 介绍
  • Docker 网络
  • Docker-compose介绍
  • Docker-compose实战
  • 构建镜像(换一种方式)
  • docker系列文章回顾

Dockerfile 介绍

vuePress-theme-reco 思考集结处    2024

Dockerfile 介绍

思考集结处 2020-08-01 Docker

Dockerfile是一个用来将你的应用构建为docker镜像的文本文件,文本中的内容是一条一条的指令,这些指令的集合在docker引擎中执行,最终构建出你的应用的docker镜像。

# Dockerfile 介绍

# 什么是Dockerfile

Dockerfile是一个用来将你的应用构建为docker镜像的文本文件,文本中的内容是一条一条的指令,这些指令的集合在docker引擎中执行,最终构建出你的应用的docker镜像。

# 准备

需要小伙伴们先在本地或者服务器上安装docker

docker安装看这篇就够了

# 命令介绍

先来看一个简单的Dockerfile文件

FROM hub.c.163.com/library/java:8
VOLUME /tmp
ADD target/springboot-docker-0.0.1-SNAPSHOT.jar docker.jar
RUN bash -c 'touch /docker.jar'
ENTRYPOINT ["java","-jar","/docker.jar"]
1
2
3
4
5

FROM :需要构建镜像的项目所需要依赖的基础镜像,SpringBoot项目是跑在JDK之上的

VOLUME :定义匿名数据卷,容器在运行的时候,会将数据写入到这个数据卷中,这里设置为一个临时目录

ADD :将target目录下的springboot-docker-0.0.1-SNAPSHOT.jar包添加到docker容器中,并将名称进行修改为docker.jar

RUN :执行后其后面的命令

ENTRYPOINT;在容器启动之前的预定义执行脚本命令

# 创建项目

下面我们,创建一个简单的SpringBoot项目来验证一下我们上文所说的。

# 加入依赖

打开的你的idea创建一个SpringBoot项目,我们只需要在pom.xml中加上如下依赖即可

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
1
2
3
4

# 编写测试接口

在项目目录项创建一个controller包,创建一个DockerFileController类,编写如下接口

/**
 * @author:triumphxx
 * @Date:2020/8/1
 * @Time:4:53 下午
 * @微信公众号:北漂码农有话说
 * @网站:http://blog.triumphxx.com.cn
 * @GitHub https://github.com/triumphxx
 **/
@RestController
public class DockerFileController {
    @RequestMapping("/docker")
    public String dockerFileRun(){
        System.out.println("dockerfile测试");
        return "DockerFile";
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 打包项目

在你的项目下使用maven将项目打成一个jar包,这时项目的target目录下就会有一个springboot-docker-0.0.1-SNAPSHOT.jar包。

# 编写Dockerfile文件

在你的项目根目录创建Dockerfile文件,下面的文件内容也就是我们文章开头的那个文件。

FROM hub.c.163.com/library/java:8
VOLUME /tmp
ADD target/springboot-docker-0.0.1-SNAPSHOT.jar docker.jar
RUN bash -c 'touch /docker.jar'
ENTRYPOINT ["java","-jar","/docker.jar"]
1
2
3
4
5

# 构建镜像

以上工作完成后,需要将项目打包为docker镜像。

# 执行命令

docker build -f /路径/Dockerfile  .
#  我的具体路径
# docker build -f /Users/wangyupeng/IdeaProjects/springboot-docker/Dockerfile .
1
2
3

细心的小伙伴可能发现这一行的命令后面有一个.,那么这个点是什么呢?它是上下文路径,是指 docker 在构建镜像,有时候想要使用到本机的文件(比如复制),docker build 命令得知这个路径后,会将路径下的所有内容打包。所有我们在构建镜像的时候上下文路径不要放其他无用的文件。

执行完构建命令后,控制台输出如下日志表示构建成功,并且docker会给镜像分配一个ID

# 查看镜像

这时执行如下命令查看是否有我们的镜像产生

docker images
1

小伙伴们可以看到,镜像已经构建完成了,但是镜像的REPOSITORY和TAG是空的,那么我们需要在执行一条命令来指定这个俩个属性

# 配置镜像

执行如下命令指定镜像的REPOSITORY和TAG

docker  build -t springboot-docker/springboot-docker:1.0 .
1

再次执行docker images,可以看到这时的镜像已经完整的呈现在你的面前

# 运行镜像

# 执行命令

镜像已经构建完成了,我们需要将它运行起来,验证正确性,执行如下命令,命令中的具体参数,作者就不一一介绍了 这篇文章有介绍

docker run -d -p8080:8080 springboot-docker/springboot-docker:1.0
# 或者
docker run -d -p8080:8080 8bf227f4fed9
1
2
3

# 查看运行日志

首先执行如下命令,查看执行的docker容器

docker ps 
1

这是我们就能够看到docker容器的ID,执行如下命令,查看执行日志

docker logs 
1

# 访问接口

在浏览器输入http://localhost:8080/docker,如果浏览器页面返回的内容是DockerFile,表示项目的镜像运行正常

# 小结

好啦,小伙伴们,我们介绍了,什么是Dockerfile以及如何将自己的项目构建为docker镜像,希望对你有所帮助。案例已分享到本人的GitHub GitHub

我是思考集结处欢迎你的关注
看板娘