Docker部署SpringBoot项目及mysql

版权声明: https://blog.csdn.net/begin1013/article/details/80860224
最近写了一个小项目,正好比较闲,就想趁机会学习一下docker,把服务docker化。本以为会比较简单,结果没想到项目与容器内数据库连接的时候卡住了,具体看操作步骤吧。

  1. 安装docker
    yum -y install docker-io
  2. 启动docker
    service docker start
  3. 启动自带helloworld测试
    docker run hello-world  
  4. 配置阿里云镜像加速
登录阿里云控制台,网址:https://cr.console.aliyun.com/?accounttraceid=6fb2e741-14b1-477e-a5a3-976f3a963051#/accelerator
进入如下界面,按照讲解配置镜像加速
5.安装java镜像,因为之后要通过java -jar命令运行项目jar包,所以下载java镜像;
docker pull java:8u111
6.创建mysql容器
  •    搜索mysql镜像
    docker search mysql
  • 安装mysql5.7镜像
    docker pull mysql:5.7
  • 使用镜像创建容器
    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
    7.部署springboot项目jar包
  • 将项目打包成可执行的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了。具体请参考以下两篇文章:点击打开链接 点击打开链接


展开阅读全文

没有更多推荐了,返回首页