Docker部署SpringBoot项目

CMSC5702分布式的作业,做了个电影评分网站。
本文介绍工作最后一步:将项目打包成Docker镜像。

Docker

干嘛的

run
像GitHub一样有一个社区,里面有大家发布的各种镜像。你可以直接把它们下载下来运行,像虚拟机似的,不用自己一点一点配置环境,就很方便。

为啥用它

build
我也可以把我的项目打个包一丢,这样别人(检查作业的TA)可以直接下载看看我们做了个什么鬼东西。

需要的镜像

下载

我们的项目用到了mysqlredis,所以先把这俩pull下来。

docker pull mysql
docker pull redis

懒得研究命令行就直接用GUI,看着也顺眼。
mysql&redis

运行

mysql

填好数据库的用户名密码

docker run --name mymysql -e MYSQL_ROOT_PASSWORD=JXZ1234@ -d -p 3306:3306  mysql

把本地的数据库文件导入进容器里

docker cp SqlGeneration.sql mymysql:/home/SqlGeneration.sql

进入刚才启动的容器

sudo docker exec -it mymysql bash

用刚才设的帐户密码登录mysql

mysql -uroot -pJXZ1234@

然后把数据库导入进去

source /home/SqlGeneration.sql

redis

docker run --name myredis -p 6379:6379 -d redis redis-server --appendonly yes

准备工作

Maven打包

mvn clean package -Dmaven.test.skip=true

Dockerfile

在进入target文件夹,于MovieHeaven-0.0.1-SNAPSHOT.jar旁边再建一个名叫Dockerfile的文件,上书:

#指定基础镜像,格式为:FROM image:tag 例如:FROM java:8   (8是版本1.8)
#这个java改到openjdk里了,没有就pull下
FROM openjdk:jdk

#维护者信息
MAINTAINER GUOXIAOYAN

#添加要加入的文件,与COPY命令的性质基本一致,但是ADD更强大
#可添加源路径,可自动解压压缩包,但解压功能和指定目标路径不可同时使用
#该命令在使用docker run -v时可不用,在后续有介绍
ADD MovieHeaven-0.0.1-SNAPSHOT.jar /opt/MovieHeaven/MovieHeaven.jar
#add命令会把config下的所有文件拷贝到容器中的/opt/test/config下,此条代码只用作添加文件夹的讲解示范,
#ADD config /opt/test/config/

#用于指定在容器启动时要执行的命令
CMD java -jar /opt/MovieHeaven/MovieHeaven.jar

#为构建镜像设置监听端口,使容器在运行时监听
EXPOSE 8083

构建与运行

把jar包build成docker镜像

docker build -t eblog .

启动容器

别忘了link上mysql与redis。

docker run -p 8083:8083 --name movieheaven  --link mymysql:emysql --link myredis:eredis -d movieheaven-image

这时候打开127.0.0.1:8083/movie/index就可以看到MovieHeaven主页啦,如果报错了可以查看日志:

docker logs -f eblog

参考

Docker快速部署springboot包含mysql、redis、rabbitmq
20分钟学会Docker部署SpringBoot项目


由于腾讯会议上写了不让公开面试内容,所以不会发布今天面试腾讯光子工作室的文章。

赞赏