说明
docker-compose 是一个用户定义和运行多个容器的 Docker 应用程序。在 docker-compose 中你可以使用 YAML 文件来配置你的应用服务。然后,只需要一个简单的命令,就可以创建并启动你配置的所有服务。
难点
使用docker-compose启动MySQL与java程序后,java程序并不会一直等待MySQL将所需的初始化SQL文件执行完成,所以Java程序在执行过程中就会报错说连不上MySQL,就算你使用docker-compose中的depends_on来使java程序容器依赖于mysql容器也是一样没有用的,docker-compose只会判断容器是否启动成功(你可以当成是MySQL容器刚刚开机成功,还未执行SQL文件就跳到执行Java程序容器了)
快速开始
首先给出项目结构图:
docker-mysql的配置我们沿用上一篇博客的配置详细戳-->Docker-mysql启动时自动执行SQL
为了使java程序能适应变化,我们将MySQL的连接配置写入docker-compose文件中:
docker-compose.yml
version: "2"
services:
mymysql:
image: mymysql:test
container_name: mymysql
ports:
- "3306:3306"
command: [
'--character-set-server=utf8mb4',
'--collation-server=utf8mb4_unicode_ci'
]
environment:
MYSQL_ROOT_PASSWORD: "root"
javatest:
image: test1jar:test
container_name: javatest1
depends_on:
- mymysql
environment:
IP: "192.168.99.100"
PORT: "3306"
DRIVERCLASSNAME: "com.mysql.jdbc.Driver"
DBNAME: "persontest"
URL: "jdbc:mysql://192.168.99.100:3306/persontest?useSSL=false"
USERNAME: "root"
PASSWORD: "root"
将原来的src目录删除,新建一个model命名为Java1,更新一下pom.xml添加jdbc包,编写一个bean类,编写App.java(这里直接用JDBC操作):
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
&