springboot连接容器内mysql_docker部署springboot项目,连接mysql容器

本文介绍了如何使用Docker部署SpringBoot应用并连接MySQL容器。通过创建SpringBoot项目,配置maven-docker-plugin插件,编写Dockerfile,设置数据库连接,并在Docker中运行容器,实现应用的顺利部署。
摘要由CSDN通过智能技术生成

入手docker部署springboot项目,记录一下学习过程,过程很简单,主要是部署过程中的收获,下面跟我一起来吧

1.创建一个springboot项目,pom引入maven-docker-plugin依赖

com.spotify

docker-maven-plugin

0.4.13

${docker.image.prefix}-docker-demo:0.0.1

${project.basedir}/src/main/docker

/

${project.build.directory}

${project.build.finalName}.jar

完成pom如下

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

org.springframework.boot

spring-boot-starter-parent

2.1.7.RELEASE

com.tz

docker

0.0.1-SNAPSHOT

docker

Demo project for Spring Boot

1.8

tz

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-test

test

mysql

mysql-connector-java

org.springframework.boot

spring-boot-starter-data-jpa

org.projectlombok

lombok

1.18.8

provided

org.springframework.boot

spring-boot-maven-plugin

com.spotify

docker-maven-plugin

0.4.13

${docker.image.prefix}-docker-demo:0.0.1

${project.basedir}/src/main/docker

/

${project.build.directory}

${project.build.finalName}.jar

tz-docker-demo

2.编写Dockerfile 文件,文件位置src/main/docker/Dockerfile,文件内容如下

FROM frolvlad/alpine-oraclejdk8:slim

VOLUME /tmp

# 下面jar包的名称为springboot项目打包完成的jar包名称

ADD tz-docker-demo.jar app.jar

EXPOSE 8761

ENTRYPOINT ["java","-jar","/app.jar"]

3.集成jpa,方便测试mysql连通性,pom依赖第一步已经给出,下面是yml文件内容

# server

server:

port: 8081

servlet:

context-path: /boot

# database

spring:

datasource:

url: jdbc:mysql://tz_mysql:3306/mystudy

driver-class-name: com.mysql.cj.jdbc.Driver

username: root

password: root

# jpa

jpa:

hibernate:

ddl-auto: update # 建表策略

show-sql: true #显示SQL语句

yml文件解析

jdbc:mysql://tz_mysql:3306/mystudy

tz_mysql: 我自己的本地mysql的docker镜像名称,此处注意,一会使用命令启动时连接容器别名要和此处一致

mystudy: 本地mysql数据库

4.编写controller

package com.tz.docker;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import java.util.Date;

import java.util.List;

/**

* @author tz

* @Classname UserController

* @Description

* @Date 2019-08-15 21:08

*/

@RestController

public class UserController {

@Autowired

private UserInfoRepository userInfoRepository;

@RequestMapping("/getUserInfo")

public Object getUserInfo() {

/*

这里有一个大坑:使用getOne()的方法,可以查到数据。但是无法默认转化成JSON数据,返回接口直接报错

*/

//UserInfo userInfo = userInfoRepository.getOne(1);

for(int i = 0;i<10;i++){

UserBean userBean = new UserBean();

userBean.setAge(12);

userBean.setBirthday(new Date());

userBean.setCreatedTime(new Date());

userBean.setJob("3333:"+i);

userBean.setSex("1");

userInfoRepository.save(userBean);

}

List all = userInfoRepository.findAll();

return all;

}

}

5.编写dao

package com.tz.docker;

import org.aspectj.weaver.ast.Var;

import org.springframework.data.jpa.repository.JpaRepository;

import org.springframework.stereotype.Repository;

/**

* @author tz

* @Classname UserInfoRepository

* @Description

* @Date 2019-08-15 21:06

*/

@Repository

public interface UserInfoRepository extends JpaRepository {

}

6.编写bean

package com.tz.docker;

import lombok.Data;

import javax.persistence.*;

import java.util.Date;

/**

* @author tz

* @Classname UserBean

* @Description

* @Date 2019-08-15 21:02

*/

@Data

@Entity //注意包名

@Table(name="user_info")

public class UserBean {

@Id

@GeneratedValue(strategy= GenerationType.AUTO)

private Integer id;

private String name;

private Integer age;

private String sex;

private String job;

private Date birthday;

private Date createdTime;

private Date updateTime;

}

7.开始镜像容器部署,首先打包应用,如果不打包直接构建镜像会保找不到jar包的错误

打包idea中使用maven工具栏

71c6b8cef694a666e447d05b453a0b9d.png

然后第二步build镜像

f0345c613d1dc42bf9ceb999f0db0476.png

用命令就是

mvn clean package docker:build

8.构建成功之后使用docker images查看构建成功的镜像

84e7758230bf35d6fcaea5ccf518307f.png

9.确认mysql容器运行

207f22942a952a9683e9d695dafd1a0f.png

10.运行我们构建成功的容器

docker run --rm -p 8081:8081 --name demo --link tz_mysql:tz_mysql tz-docker-demo:0.0.1

命令解析

--rm 运行完删除容器

-p 端口映射

--name 本镜像名称

--link tz_mysql 第一个参数为mysql的docker镜像名称,tz_mysql 第二个参数为别名,此处和yml文件中连接mysql的地址保持一致

tz-docker-demo:0.0.1 这个为我们刚刚build的镜像名称

11.好了,docker部署springboot项目就是这么简单,下面看一下成功

浏览器输入 http://localhost:8081/boot/getUserInfo

显示bbc33fa0d8c37c9481d7a0ff2e234fc1.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用docker部署springboot+MySQL项目,可以按照以下步骤进行操作: 1. 编写Dockerfile文件,指定基础镜像、安装JDK和MySQL等依赖,将项目打包成jar包并复制到镜像中。 ```dockerfile FROM openjdk:11-jdk-slim VOLUME /tmp ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} app.jar RUN mkdir -p /var/lib/mysql RUN apt-get update && apt-get install -y mysql-server RUN echo "bind-address = 0.0.0.0" >> /etc/mysql/mysql.conf.d/mysqld.cnf RUN service mysql start && \ mysql -uroot -e "CREATE DATABASE db_name" && \ mysql -uroot -e "CREATE USER 'username'@'%' IDENTIFIED BY 'password'" && \ mysql -uroot -e "GRANT ALL PRIVILEGES ON db_name.* TO 'username'@'%';" EXPOSE 8080 ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] ``` 2. 构建镜像 在Dockerfile的目录下执行以下命令: ```shell docker build -t springboot-mysql . ``` 这里将镜像命名为springboot-mysql。 3. 运行容器 执行以下命令运行容器: ```shell docker run -d -p 8080:8080 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=db_name -e MYSQL_USER=username -e MYSQL_PASSWORD=password springboot-mysql ``` 这里将容器的8080端口映射到主机的8080端口,3306端口映射到主机的3306端口,并指定MySQL的root密码、数据库名、用户名和密码。 4. 访问应用 在浏览器中访问http://localhost:8080,即可访问应用。 注意:如果使用docker-compose进行部署,可以在docker-compose.yml文件中指定MySQL的配置,更加方便和灵活。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值