From 247d7296f8cf4e7aadd01036bcd36f8aed61cbe2 Mon Sep 17 00:00:00 2001 From: Adrian Macneil Date: Sun, 23 Apr 2017 20:46:27 -0700 Subject: [PATCH] Add docker-compose healthcheck for test dependencies (#12) --- .travis.yml | 6 ++++++ Makefile | 2 ++ docker-compose.yml | 36 +++++++++++++++++++++++------------- mysql_test.go | 10 +--------- postgres_test.go | 11 +---------- 5 files changed, 33 insertions(+), 32 deletions(-) diff --git a/.travis.yml b/.travis.yml index cc75d44..81c80e5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,12 @@ sudo: required services: - docker install: + - curl -fsSL https://github.com/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > docker-compose + - chmod +x docker-compose + - sudo mv docker-compose /usr/local/bin/docker-compose + - docker-compose version + - docker-compose pull + - docker-compose build - docker-compose up -d - docker-compose run dbmate go version script: diff --git a/Makefile b/Makefile index 5f9c3bb..ad39585 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,9 @@ clean: rm -rf dist container: + $(DC) pull $(DC) build + $(DC) up -d lint: $(DC) run dbmate golint diff --git a/docker-compose.yml b/docker-compose.yml index fae8be5..6a855dd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,13 +1,23 @@ -dbmate: - build: . - volumes: - - .:/go/src/github.com/amacneil/dbmate - links: - - mysql - - postgres -mysql: - image: mysql:5.7 - environment: - MYSQL_ROOT_PASSWORD: root -postgres: - image: postgres:9.4 +version: '2.1' +services: + dbmate: + build: . + volumes: + - .:/go/src/github.com/amacneil/dbmate + depends_on: + mysql: + condition: service_healthy + postgres: + condition: service_healthy + + mysql: + image: mysql + environment: + MYSQL_ROOT_PASSWORD: root + healthcheck: + test: ["CMD", "mysqladmin", "status", "-proot"] + + postgres: + image: postgres + healthcheck: + test: ["CMD", "pg_isready"] diff --git a/mysql_test.go b/mysql_test.go index f27fdc2..dcd693d 100644 --- a/mysql_test.go +++ b/mysql_test.go @@ -3,23 +3,15 @@ package main import ( "database/sql" "net/url" - "os" "testing" "github.com/stretchr/testify/require" ) func mySQLTestURL(t *testing.T) *url.URL { - str := os.Getenv("MYSQL_PORT") - require.NotEmpty(t, str, "missing MYSQL_PORT environment variable") - - u, err := url.Parse(str) + u, err := url.Parse("mysql://root:root@mysql:3306/dbmate") require.Nil(t, err) - u.Scheme = "mysql" - u.User = url.UserPassword("root", "root") - u.Path = "/dbmate" - return u } diff --git a/postgres_test.go b/postgres_test.go index 86f9302..9d46696 100644 --- a/postgres_test.go +++ b/postgres_test.go @@ -3,24 +3,15 @@ package main import ( "database/sql" "net/url" - "os" "testing" "github.com/stretchr/testify/require" ) func postgresTestURL(t *testing.T) *url.URL { - str := os.Getenv("POSTGRES_PORT") - require.NotEmpty(t, str, "missing POSTGRES_PORT environment variable") - - u, err := url.Parse(str) + u, err := url.Parse("postgres://postgres:postgres@postgres/dbmate?sslmode=disable") require.Nil(t, err) - u.Scheme = "postgres" - u.User = url.User("postgres") - u.Path = "/dbmate" - u.RawQuery = "sslmode=disable" - return u }