1.我有个服务A依赖mysql数据库,只有在mysql的镜像成功启动才启动A,mysql会首选创建名称为ry的数据库,并完成数据初始化
drop table if exists gen_table_column;
create table gen_table_column (
column_id bigint(20) not null auto_increment comment '编号',
table_id varchar(64) comment '归属表编号',
column_name varchar(200) comment '列名称',
column_comment varchar(500) comment '列描述',
column_type varchar(100) comment '列类型',
java_type varchar(500) comment 'JAVA类型',
java_field varchar(200) comment 'JAVA字段名',
is_pk char(1) comment '是否主键(1是)',
is_increment char(1) comment '是否自增(1是)',
is_required char(1) comment '是否必填(1是)',
is_insert char(1) comment '是否为插入字段(1是)',
is_edit char(1) comment '是否编辑字段(1是)',
is_list char(1) comment '是否列表字段(1是)',
is_query char(1) comment '是否查询字段(1是)',
query_type varchar(200) default 'EQ' comment '查询方式(等于、不等于、大于、小于、范围)',
html_type varchar(200) comment '显示类型(文本框、文本域、下拉框、复选框、单选框、日期控件)',
dict_type varchar(200) default '' comment '字典类型',
sort int comment '排序',
create_by varchar(64) default '' comment '创建者',
create_time datetime comment '创建时间',
update_by varchar(64) default '' comment '更新者',
update_time datetime comment '更新时间',
primary key (column_id)
) engine=innodb auto_increment=1 comment = '代码生成业务表字段';
以下是我的服务等待mysql容器启动之后并且ready后,再执行的容器启动的docker-compose脚本
version: '3'
services:
test-mysql:
build:
# 上下文路径 . 为当前目录
context: ./mysql
# 指定构建镜像的 Dockerfile1-1 文件名
dockerfile: Dockerfile
image: mark/mysql:8.0.32
restart: always
container_name: mysql2
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: ry
TZ: Asia/Shanghai
healthcheck:
test: mysql --user=root --password=root -e 'select * from ry.gen_table_column'
interval: 3s # 间隔时间
timeout: 5s
retries: 50
# volumes:
# - ./mysql/db:/docker-entrypoint-initdb.d
ports:
- 3307:3306
ruoyitest:
build:
# 上下文路径 . 为当前目录
context: ./springboot
# 指定构建镜像的 Dockerfile1-1 文件名
dockerfile: Dockerfile
# 指定服务使用的镜像
image: mark/ruoyi:v1.0
restart: always
# 指定容器名称
container_name: ruoyitest
# 指定服务运行的端口
ports:
- 8081:80 # API端口
environment:
- "spring.datasource.druid.master.url=jdbc:mysql://mysql2:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8"
links:
- test-mysql
depends_on:
test-mysql:
condition: service_healthy