1、首先确保你的服务器上已经安装docker和docker-compose(要分别安装,不是同一个东西)
- 我这里已经安装docker,版本如下: image.png
2、在服务器创建bootapp文件夹
2.1、创建docker-compose.yaml文件
version: "3"
services:
web:
hostname: test
build: ./web/ #需要构建的Dockerfile文件
ports:
- "38000:8080" #容器端口映射到宿主机的端口
environment:
username: lzz #springboot项目中连接数据库需要的环境变量
password: lzz # mysql:3306 这里不能写localhost:3306,应该写下面这种,mysql对应的是服务名称
url: jdbc:mysql://mysql:3306/library?useUnicode=true&characterEncoding=utf8
depends_on: #web服务依赖mysql服务,要等mysql服务先启动
- mysql
mysql:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: library
MYSQL_USER: lzz
MYSQL_PASSWORD: lzz
ports:
- "3306:3306"
volumes:
- ./db:/docker-entrypoint-initdb.d #初始化数据库
2.2、文件夹下的文件
image.png2.3、下文件夹
image.pngspringbootdemo-0.0.1-SNAPSHOT.jar :springboot项目对应的jar包
3、Dockerfile :构建镜像的文件
FROM maven:3.5-jdk-8 #指定jdk镜像
VOLUME /tmp
ADD springbootdemo-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
4、db文件夹
image.png4.1 部分sql代码
CREATE DATABASE IF NOT EXISTS `library` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */;
USE `library`;
DROP TABLE IF EXISTS `arrive_reminder`;
SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8;
SET character_set_client = @saved_cs_client;
DROP TABLE IF EXISTS `book`;
CREATE TABLE `book` (
`book_id` int(11) NOT NULL AUTO_INCREMENT,
`ISBN` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
`location` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,
`state` int(11) NOT NULL,
`operator` int(11) NOT NULL,
PRIMARY KEY (`book_id`),
UNIQUE KEY `BID_UNIQUE` (`book_id`),
KEY `op2_idx` (`operator`),
KEY `bo_idx` (`ISBN`),
CONSTRAINT `bo` FOREIGN KEY (`ISBN`) REFERENCES `booklist` (`ISBN`) ON DELETE CASCADE ON UPDATE NO ACTION,
CONSTRAINT `op2` FOREIGN KEY (`operator`) REFERENCES `manager` (`manager_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=176 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
5、springboot中使用docker-compose.yaml环境变量的值
application.yml
spring:
thymeleaf:
cache: false
prefix: classpath:/templates/
suffix: .html
encoding: UTF-8
mode: HTML5
datasource:
name: test
url: ${url}
username: ${username}
password: ${password}
# 使用druid数据源
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
mail:
host: smtp.163.com
username: managebooks@163.com
password: 654321bm
properties:
mail.smtp.auth: true
mail.smtp.starttls.enable: true
mail.smtp.starttls.required: true
mybatis:
mapper-locations: classpath:Mapper/*.xml
type-aliases-package: cn.lightina.managebooks.pojo
configuration:
map-underscore-to-camel-case: true
mail:
fromMail:
addr: managebooks@163.com
网友评论