docker 搭建一个简单springboot项目
这篇文章主要是记录自己搭建环境出现的一些问题和解决方式,主要参考的 https://www.runoob.com/docker,可以说直接按照他里面的文章来的吧,但是自己动手终归会有特殊情况,所以记录一下。
系统:CentOS Linux release 7.9.2009 (Core)
1,安装docker
网上有很多,我是直接使用命令
curl -sSL https://get.daocloud.io/docker | sh
什么也不需要操作,等待执行完毕,根据网络等待时间也是有异,我大概等了3分钟左右。docker ps 提示
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
搜了一下,重启好像能解决 ,最开始是用 sudo service docker restart,
不过提示 --Redirecting to /bin/systemctl restart docker.service,这个并不是报错,只是个日志信息,上面的问题在执行这个命令后是已经解决了。
这个提示是linux版本问题,业精于勤荒于嬉,太久没有用linux一些基本的命令都忘了。
其实最开始用这个就行--systemctl restart docker.service。再次执行docker ps就没问题了。
2,安装mysql
先搜一下版本,看看自己用什么版本的MySQL,执行--docker search mysql 显示如下
??并不好用,直接去docker仓库找吧,这是地址--https://hub.docker.com/ 。
我之前是直接买的阿里的MySQL5.7,毕竟不贵而且也稳定,主要还是稳定。我自己也懒得做备份这些事了。
纠结了一下到底用什么,本来求稳还是5.7,但是想想还是算了,没这个必要,虽然我现在搭建的这个是生产环境,但是是很小的项目,出了问题也不怕(大不了直接跑路)。
随便提一下,自己用的话要去了解5.7和8的区别,选择适合的才是最好的。
用MySQL8.0(我此时在https://hub.docker.com/_/mysql?tab=tags看到的最新的版本是 mysql 8.0.27)
docker pull mysql,默认tag是latest,所以此命令也等于 docker pull mysql:latest
等待下载完毕,docker images 能看到拉下来的MySQL
执行--
docker run --name mysql -p 3306:3306 -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password2021 -d mysql 。
这个命令主要作用就是将mysql镜像3306端口映射宿主机3306端口,用户名-- root,密码-- password2021,挂载mysql镜像/var/lib/mysql 目录到宿主机 /data/mysql。
启动mysql镜像的命令还有很多扩展,我这个命令只算是最基本的。
docker ps 能查看启动的容器。完成!
3,安装nginx
docker pull nginx;
docker run --name nginx -p 80:80 --privileged -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/log:/var/log/nginx -v /user/service/view:/usr/service/view -d nginx
报错,docker无法直接挂载文件,推荐是挂载目录,但是网上也有一些解决方案
删除容器 docker rm nginx
在宿主机把自己的nginx配置放到 /data/nginx/conf/nginx.conf,再次执行
docker run --name nginx -p 80:80 --privileged -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/log:/var/log/nginx -v /user/service/view:/usr/service/view -d nginx
ok没问题。
这个时候就需要部署java项目了
4,部署springboot项目
首先打包成jar,比如是test.jar,然后把dockerfile和jar放到服务器同一目录下。
打包是在windows电脑打包的,所以服务器不需要java环境,也不需要maven环境。
然后 docker build -f Dockerfile -t test:1.0
dockerfile 内容
FROM java:8 COPY test.jar /app.jar EXPOSE 80 ENTRYPOINT ["java", "-jar", "app.jar"]
dockerfile怎么写还是需要自己去了解一下才是最好的,不过我这内容很简单,拉java8的docker镜像,以此为基础构建自己的镜像。把jar包copy到镜像里去,启动服务。
docker images 能看到 test:1.0 镜像。
docker run --name wxkoiok -p 8810:80 --privileged=true -d test:1.0。
完成。