使用Dockerfile

今天看到汪云飞老师的Spring boot实战中关于Dockerfile的创建以及用docker部署项目,感觉非常简单,这里跟大家分享下。


默认有一台已经安装了docker的主机,新建一个springboot项目,该项目只有一个对外接口(只是用来测试实现功能,如果喜欢你可以写任意多个接口),创建好后打包成jar包。

package com.rhett;


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@SpringBootApplication
@RestController
public class StartApplication {

@RequestMapping("/")
public String home(){

return "Hello docker";
}


public static void main(String[] args){
SpringApplication.run(StartApplication.class, args);
}
}


这里是我的代码,跟汪老师的基本一样,另外我设定项目的端口为8081.

我的服务器是CentOs7.2,其它环境的也可以作为参考。


在var下边新建目录apps,我的项目名称是firstdocker,所有又建了个目录firstdockerapp,具体如下:


Dockerfile内容为:

FROM java:8


MAINTAINER rhett


ADD firstdocker-0.0.1-SNAPSHOT.jar firstdockerapp.jar


EXPOSE 8081


ENTRYPOINT ["java","-jar","/firstdockerapp.jar"]



运行环境是java8,给项目重命名为firstdockerapp.jar,端口8081为之前定义的项目端口,这个需要统一。ENTRYPOINT 里为jar包的运行指令,大家都应该比较熟悉。


创建image的指令为docker build -t  rhett/anotherdocker .

rhett/anotherdocker 为创建的镜像的名字,可以在后边加上rhett/anotherdocker :1.0之类的来指定tag,如果不指定默认为latest.

还有一定特别重要,上面的指令最后有个".",这个是必须的,说明是本目录。如果该指令不在本目录,可以把"."改为具体路径(这个我没试过,听一些朋友说的,大家可以试试)。


创建好镜像之后就可以安装正常镜像使用了,创建包含项目的容器:

docker run -d --name firstdockerapp -p 8084:8081 rhett/firstdockerapp

8081为容器内部的端口,8084为对外的端口。


这时一个springboot项目就在docker容器中运行起来了。


这里有一些需要注意的地方我说下:

1、目录下的结构,项目的jar包和Dockerfile文件必须放在同一目录(以后研究是否可以分开放,名字是否可以更改),文件名字必须为Dockerfile。否则执行的时候可能会报一下异常:

unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /var/apps/Dockerfile: no such file or directory

2、Dockerfile文件的创建,第一步是创建一个普通的文件,命名为Dockerfile。Dockerfile其实只是一个普通的文件,只是里面包含一些docker运行的指令。这一点一般都没有说明,对我这种开发兼运维的人来说真的很头疼,不知道怎么入手。如果执行build指令的时候没有新建Dockerfile也会报1中的异常。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值