闲来无事摸鱼学习docker,突发奇想想把自己之前做过的垃圾项目放到斥巨资新买的云服务器上,然在下记忆力超群(的差),遂记录于此,防止以后又不断百度。

后端项目是springboot写成,整合了mybatis,因此有一些配置文件和很多xml...而我又希望配置文件不要打包进去而是能够在外部,方便修改,这导致通过拷贝放到镜像里面困难重重总报错,而本人又不想去研究这些(菜),于是采取了挂载的方法(就像在刚生成的target文件夹里直接运行一样,岂不美哉~

使用maven打包项目

这里直接用的idea的maven功能,生成的target文件夹如下,有一堆认识的不认识的配置

 直接把这个target文件夹进行一个简单的移(本人使用xftp进行远程文件传输

 编写Dockerfile

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明,说白了就是在执行docker build时候运行的脚本。在刚才复制过去的target文件夹(此处我改为了rest_back)里面新建一个Dockerfile文件

 写入脚本内容(参考并感谢https://www.jb51.net/article/255143.htm#_lab2_2_0

# 拉取jdk8作为基础镜像
FROM java:8
# 作者
MAINTAINER marious
# 镜像启动后暴露的端口
EXPOSE 8081
# jar运行命令,参数使用逗号隔开 /usr/data是容器内路径,采取挂载的方式,因此无需在容器内创建路径
# 因为采取的不是在这里ADD jar包,而是运行时挂载,因此这里的jar包路径要注意
ENTRYPOINT ["java","-jar","/usr/data/restaurant_back-0.0.1-SNAPSHOT.jar"]

创建镜像

在宿主机的当前项目文件下(包含这个dockerfile的文件夹里)运行:

docker build -t 取一个镜像名称 .

ie:

docker build -t rest_back .

不要忘记最后这个点 .

 查看当前镜像

docker images

 运行容器(挂载项目目录

运行docker:

docker run -d -it --name 给容器取个名字 -p 宿主机端口:容器端口 -v 宿主机jar包所在路径:容器里jar包所在路径 你创建的镜像名

ie: 其中容器里jar包路径'/usr/data'是与刚才创建的Dockerfile里的路径一致的

docker run -d -it --name rest_back -p 8001:8081 -v /docker/apps/rest_back:/usr/data rest_back

-p是端口映射,指我在外部访问 SERVER_IP:8001时相当于访问了容器的8081端口

查看日志:

docker logs -ft 你的容器名(-ft 实时查看

ie:

docker logs -ft rest_back

可以看到springboot的启动日志(也可能报错:)

 用postman测试后端接口 http://SERVER_IP:server_port/your_url,成功了喵

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐