最近写了一个小项目,正好比较闲,就想趁机会学习一下docker,把服务docker化。本以为会比较简单,结果没想到项目与容器内数据库连接的时候卡住了,具体看操作步骤吧。
- 安装docker
yum -y install docker-io - 启动docker
service docker start - 启动自带helloworld测试
docker run hello-world - 配置阿里云镜像加速
登录阿里云控制台,网址:https://cr.console.aliyun.com/?accounttraceid=6fb2e741-14b1-477e-a5a3-976f3a963051#/accelerator
进入如下界面,按照讲解配置镜像加速
5.安装java镜像,因为之后要通过java -jar命令运行项目jar包,所以下载java镜像;
docker pull java:8u1116.创建mysql容器- 搜索mysql镜像
docker search mysql - 安装mysql5.7镜像
docker pull mysql:5.7 - 使用镜像创建容器
7.部署springboot项目jar包docker run -p 3306:3306 --name mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7 - 将项目打包成可执行的jar包,数据库配置可以直接写localhost
- 先建docker文件夹
- 把jar包上传到服务器放到docker文件夹去,同时创建文件Dockerfile,内容如下:
- 开始构建镜像,注意一定要使用host网络连接方式,否则项目会连接不上mysql,导致项目起不来。
docker run --net=host --name=news -d -p 8081:8081 news
目前为止,项目就成功跑来了,可以去浏览器访问一下看看是否成功。
小编一开始没有采用host的方式去启动项目容器,结果一直连接不上mysql,这是因为docker会自动给每个容器分配ip,但是项目里配置的mysql地址是localhost,在容器内连接localhost是连接容器本身而不是宿主机的localhost,所以一直找不到mysql。所以采用host的网络方式将容器与宿主机共用一个Network Namespace,这样容器内localhost就是宿主机的localhost了。具体请参考以下两篇文章:点击打开链接 点击打开链接
来源:CSDN
作者:ColinLiu1997
链接:https://blog.csdn.net/begin1013/article/details/80860224