记一次docker部署springboot项目,mysql以及redis一样是docker中安装

一:首先 在idea中的springboot项目打成jar包,具体是方式是如下
记一次docker部署springboot项目,mysql以及redis一样是docker中安装
记一次docker部署springboot项目,mysql以及redis一样是docker中安装
记一次docker部署springboot项目,mysql以及redis一样是docker中安装这里的数据库密码和账户必须是真确的,数据库和redis也是在docker中安装的

二:在docker中安装mysql的服务
这里的linux的版本是centos,具体安装docker就不介绍了
执行docker search mysql 这里的最新版本是8.0版本了 如果采用的话 项目中使用这个的话就会导致一般的5.X的jar不合适,这样的话本地和线上的数据库本本不一致,上线时需要更话jar包 所以采用docker pull mysql:5.6

下载下来之后就会有一个mysql5.6的镜像
同理安装redis的镜像

记一次docker部署springboot项目,mysql以及redis一样是docker中安装

mysql:执行
docker run -p 3306:3306 –name mymysql -v /root/data/conf:/etc/mysql/conf.d -v /root/data/logs:/logs -v /root/data/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=zhs -d mysql:5.6

redis执行
docker run –name redis -p 6379:6379 -v $PWD/data:/data -d redis redis-server –appendonly yes

具体含义可以自行百度,反正我是知道了

docker ps 可以看见2个服务正在启动
记一次docker部署springboot项目,mysql以及redis一样是docker中安装

三:构建springboot镜像
创建一个文件夹 用来存放自己的jar包 以及dockerfile文件
进入创建的文件夹中,touch Dockerfile

基础镜像,采用的时jdk8

FROM java:8

作者的信息

MAINTAINER 70kg [email protected]

创建一个数据卷

VOLUME /tmp
//将项目添加到镜像中 并重命名为app.jar
ADD telnet-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c ‘touch /app.jar’

启动时执行命令

ENTRYPOINT [“java”,”-Djava.security.egd=file:/dev/./urandom”,”-jar”,”/app.jar”]

在该目录中执行docker build -t –name telnet .
构建镜像 这里的.是必须的 表示当前目录中的dockerfile

在使用dokcer images 可以查看到已经存在的镜像 telnet

4:启动项目
现在已经知道了 mysql 和redis服务都已经启动了
所有直接执行docker run -d –name telnet -p 8888:8888 telnet就行了 吗?一开始我也是这么做的,后来发现启动的时候是没有问题,但是总是访问不到,后开docker logs -f -t(时间) –tail 10 (实时的打印日志)发现mysql总是连接不上去,然后修改了mysql的配置文件 增加wait_time,发现还是不行,后来想到了 是不是mysql在另一台容器的原因 所以在启动容器的时候执行 docker run -d –name telnet -p 8888:8888 –link=mysql(容器名):my(别名) –link=redis:re telnet
这是后启动的日志没有问题
记一次docker部署springboot项目,mysql以及redis一样是docker中安装
再次访问就没有问题了