【docker】通过dockerfile部署自己的springboot项目

docker pull:

上一篇提到,我们直接使用docker pull 拉取到的image,实际是从 docker官方镜像仓库中拉取的(https://hub.docker.com),

如图就是在docker hub中tomcat的image

 

然而,官方的image是如何创建的呢?

在GitHub上有一个仓库源(https://github.com/docker-library),在这个项目中可以找到tomcat相关

然后我们可以按照下图中的路径一直点击,就可以看到一个名为Dockerflie的文件,官方的image其实就是通过这个Dockerflie来生成的。

Dockerflie语法:

FROM:指定基础镜像,比如:FROM openjdk:8

FROM openjdk:8

MAINTAINER:指定维护者信息 

MAINTAINER tmac01

RUN:在镜像内部执行一些命令,比如安装软件,配置环境等,换行可以使用 " "

RUN groupadd -r mysql && useradd -r -g mysql mysql

ENV:设置变量的值,比如:ENV MYSQL_MA JOR 5.7

ENV MYSQL_MAJOR 5.7

LABEL: 设置镜像标签

LABEL email="xxx@163.com" name="mysql-demo" version="1.0.0" author="tmac01"

VOLUME:指定数据的挂在目录

VOLUME /var/lib/mysql

COPY:将主机的文件复制到镜像内,如果目录不存在,会自动创建所需要的目录,注意只是复制,不会提取和解压

COPY spring-demo.jar /usr/local/bin/

 ADD:将主机的文件复制到镜像内,和COPY类似,只是ADD会对压缩文件提取和解压

ADD spring.yml /etc/user

WORKDIR:指定镜像的工作目录,之后的命令都是基于此目录工作,若不存在则创建

WORKING /user/local

WORKDIR mysql

RUN touch readme.txt

会在/user/local/mysql 创建一个readme.txt文件

 CMD:容器启动的时候默认会执行的命令,若有多个CMD命令,最后一个生效

CMD ["mysqld"]

或者

CMD mysqld

ENTRYPOINT:和CMD的使用类似

和CMD不同:docker run 执行时会覆盖CMD的命令,而ENTRYPOINT不会

ENTRYPOINT ["mysqld"]

EXPOSE:指定镜像要暴露的端口,启动镜像时,可以使用-p将该端口映射给宿主机

EXPOSE 3306

 

如何自己来创建一个image:

1.准备一个springboot项目,并且mvn clean package 生成jar包,代码如下,生成jar包为:dockerfile-demo-0.0.1-SNAPSHOT.jar

@RestController
public class DockerController {
    @GetMapping("/dockerfile")
    @ResponseBody
    String dockerfile() {
        return "hello docker" ;
    }
}

2.创建一个文件夹用来存放Dockerflie文件,文件夹名随意。

3.将dockerfile-demo-0.0.1-SNAPSHOT.jar传入第2步建好的文件夹中

4.创建一个Dockerfile文件,如图

5.vim 编辑Dockerfile

FROM openjdk:8
MAINTAINER tmac01
LABEL name="dockerfile-demo" version="1.0" author="tmac01"
COPY dockerfile-demo-0.0.1-SNAPSHOT.jar dockerfile-image.jar
CMD ["java","-jar","dockerfile-image.jar"]

6.运行 docker build -t my-docker-file-image

此时image已经生成,如图:

我们可以执行命令 docker run -d --name my-docker-file -p 8080:8080 my-docker-file-image

验证:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值