diff --git a/docker/mysql-setup/Dockerfile b/docker/mysql-setup/Dockerfile new file mode 100644 index 0000000000..a46e23fb04 --- /dev/null +++ b/docker/mysql-setup/Dockerfile @@ -0,0 +1,8 @@ +FROM jwilder/dockerize:0.6.1 + +RUN apk add --no-cache mysql-client + +COPY docker/mysql-setup/init.sql /init.sql + +CMD dockerize -wait tcp://$MYSQL_HOST:$MYSQL_PORT -timeout 240s \ + mysql -u $MYSQL_USERNAME -p"$MYSQL_PASSWORD" -h $MYSQL_HOST < /init.sql \ No newline at end of file diff --git a/docker/mysql-setup/init.sql b/docker/mysql-setup/init.sql new file mode 100644 index 0000000000..466e6854d6 --- /dev/null +++ b/docker/mysql-setup/init.sql @@ -0,0 +1,53 @@ +-- create datahub database +CREATE DATABASE IF NOT EXISTS datahub; +USE datahub; + +-- create metadata aspect table +create table if not exists metadata_aspect ( + urn varchar(500) not null, + aspect varchar(200) not null, + version bigint(20) not null, + metadata longtext not null, + createdon datetime(6) not null, + createdby varchar(255) not null, + createdfor varchar(255), + constraint pk_metadata_aspect primary key (urn,aspect,version) +); + +-- create default records for datahub user if not exists +CREATE TABLE temp_metadata_aspect LIKE metadata_aspect; +INSERT INTO temp_metadata_aspect (urn, aspect, version, metadata, createdon, createdby) VALUES( + 'urn:li:corpuser:datahub', + 'com.linkedin.identity.CorpUserInfo', + 0, + '{"displayName":"Data Hub","active":true,"fullName":"Data Hub","email":"datahub@linkedin.com"}', + now(), + 'urn:li:principal:datahub' +), ( + 'urn:li:corpuser:datahub', + 'com.linkedin.identity.CorpUserEditableInfo', + 0, + '{"skills":[],"teams":[],"pictureLink":"https://raw.githubusercontent.com/linkedin/datahub/master/datahub-web/packages/data-portal/public/assets/images/default_avatar.png"}', + now(), + 'urn:li:principal:datahub' +); +-- only add default records if metadata_aspect is empty +INSERT INTO metadata_aspect +SELECT * FROM temp_metadata_aspect +WHERE NOT EXISTS (SELECT * from metadata_aspect); +DROP TABLE temp_metadata_aspect; + +-- create metadata index table +CREATE TABLE IF NOT EXISTS metadata_index ( + `id` BIGINT NOT NULL AUTO_INCREMENT, + `urn` VARCHAR(200) NOT NULL, + `aspect` VARCHAR(150) NOT NULL, + `path` VARCHAR(150) NOT NULL, + `longVal` BIGINT, + `stringVal` VARCHAR(200), + `doubleVal` DOUBLE, + CONSTRAINT id_pk PRIMARY KEY (id), + INDEX longIndex (`urn`,`aspect`,`path`,`longVal`), + INDEX stringIndex (`urn`,`aspect`,`path`,`stringVal`), + INDEX doubleIndex (`urn`,`aspect`,`path`,`doubleVal`) +);