nginx+前端项目+springboot+mysql+docker部署

文章目录

  • 一、构建springboot项目
    • 1.1 在根目录下创建Dockerfile
  • 二、mysql数据库
  • springboot对应容器和mysql数据库对应容器通信
  • 参考文献


一、构建springboot项目

由于只是为了学习怎样部署springboot项目到docker中去,这里我随便找了一个springboot项目。

1.1 在根目录下创建Dockerfile

Dockerfile,是用来创建镜像的。如下图:
nginx+前端项目+springboot+mysql+docker部署_第1张图片

提示:
容器是镜像的一个运行实例。
在idea中可以安装docker integration 插件(本博客就是安装了docker插件的,至于怎样安装,自行google)

  1. 创建Dockerfile。并编写:
#下载进行
FROM java:8
#创建容量来存放tomcat
VOLUME /tmp
#该命令将会把maven打包出来的jar放入容器的app.jar中
ADD target/oauth2demo-0.0.1-SNAPSHOT.jar app.jar
#入口的。和cmd相似
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
#容器暴露给宿主机的端口
EXPOSE 8080

提示:根据项目需要,自行修改Dockerfile

  1. 使用maven打包项目。命令:
mvn package

二、mysql数据库

该部分可以参考 Docker $ 项目部署 :Docker 部署 SpringBoot + Mysql

  1. 自定义镜像。
    所需文件
    Dockerfile:
FROM mysql:5.7.26
# 把数据库初始化数据文件复制到工作目录
COPY data.sql /data.sql
COPY privileges.sql /privileges.sql
# 把要执行的shell文件放到/docker-entrypoint-initdb.d/目录下,容器会自动执行这个shell
COPY initDb.sh /docker-entrypoint-initdb.d/initDb.sh
# 给执行文件增加可执行权限
RUN chmod a+x /docker-entrypoint-initdb.d/initDb.sh

initDb.sh

#!/bin/bash
mysql -u root -p$MYSQL_ROOT_PASSWORD<

privileges.sql

create database oauth2Demo;
use oauth2Demo;

data.sql(数据库)

//由于文件过长就不粘贴了

现在构建镜像:

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=root -p 127.0.0.1:3307:3306 -d mysql:init

springboot对应容器和mysql数据库对应容器通信

两个容器不做配置是不能通信的。怎样才能让springboot项目里面的数据库连接能连接上mysql数据库容器呢。需要 --link。
nginx+前端项目+springboot+mysql+docker部署_第2张图片
重点来了,在我们的项目中配置数据库连接时。要我们–link 时的别名some-mysql:
nginx+前端项目+springboot+mysql+docker部署_第3张图片
测试,运行成功
nginx+前端项目+springboot+mysql+docker部署_第4张图片

参考文献

mysql Docker Official Images

Spring Boot with Docker

docker打包运行springboot项目(用mvn)

Docker $ 项目部署 :Docker 部署 SpringBoot + Mysql
Legacy container links

docker一个宿主机内两个容器之间的通信问题

你可能感兴趣的:(Docker,for,java开放)