From 16e742fcd71f4355cf3025178ce02393ed520214 Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Mon, 5 Jan 2015 16:28:03 -0900 Subject: [PATCH] Fig. --- Dockerfile | 4 ++-- datastore/db.go | 12 ++++++++++-- docker/postgres/Dockerfile | 3 +++ docker/postgres/dbsetup.sh | 10 ++++++++++ fig.yml | 34 ++++++++++++++++++++++++++++++++++ 5 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 docker/postgres/Dockerfile create mode 100644 docker/postgres/dbsetup.sh create mode 100644 fig.yml diff --git a/Dockerfile b/Dockerfile index 184737d..08aa59e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ -FROM golang:1.3.1 +FROM golang:1.4.0 ADD . /go/src/github.com/thermokarst/bactdb RUN go get -d -v github.com/thermokarst/bactdb/cmd/bactdb RUN go install github.com/thermokarst/bactdb/cmd/bactdb -ENTRYPOINT /go/bin/bactdb serve +CMD /go/bin/bactdb serve --keys=/bactdb/keys/ EXPOSE 8901 diff --git a/datastore/db.go b/datastore/db.go index 5d065b7..4debf79 100644 --- a/datastore/db.go +++ b/datastore/db.go @@ -26,6 +26,7 @@ var connectOnce sync.Once func Connect() { connectOnce.Do(func() { var err error + setDBCredentialsFromFig() DB.Dbx, err = sqlx.Open("postgres", "timezone=UTC sslmode=disable") if err != nil { log.Fatal("Error connecting to PostgreSQL database (using PG* environment variables): ", err) @@ -35,8 +36,6 @@ func Connect() { }) } -var createSQL []string - // Create the database schema. It calls log.Fatal if it encounters an error. func Create(path string) { migrator, err := gomigrate.NewMigrator(DB.Dbx.DB, gomigrate.Postgres{}, path) @@ -93,3 +92,12 @@ func transact(dbh modl.SqlExecutor, fn func(fbh modl.SqlExecutor) error) error { return nil } + +func setDBCredentialsFromFig() { + if figVal := os.Getenv("BACTDB_DB_1_PORT_5432_TCP_ADDR"); figVal != "" { + err := os.Setenv("PGHOST", figVal) + if err != nil { + log.Print(err) + } + } +} diff --git a/docker/postgres/Dockerfile b/docker/postgres/Dockerfile new file mode 100644 index 0000000..e1af542 --- /dev/null +++ b/docker/postgres/Dockerfile @@ -0,0 +1,3 @@ +FROM postgres:9.3 +ADD dbsetup.sh /docker-entrypoint-initdb.d/ + diff --git a/docker/postgres/dbsetup.sh b/docker/postgres/dbsetup.sh new file mode 100644 index 0000000..e63dddb --- /dev/null +++ b/docker/postgres/dbsetup.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +gosu postgres postgres --single <<- EOSQL +CREATE USER "$PGUSER" WITH SUPERUSER PASSWORD '$PGPASSWORD'; +CREATE DATABASE $PGUSER; +CREATE DATABASE $PGDB; +EOSQL + +{ echo; echo "host all \"$PGUSER\" 0.0.0.0/0 md5"; } >> "$PGDATA"/pg_hba.conf + diff --git a/fig.yml b/fig.yml new file mode 100644 index 0000000..32c497f --- /dev/null +++ b/fig.yml @@ -0,0 +1,34 @@ +data: + build: docker/postgres + environment: + PGUSER: bactdb_user + PGPASSWORD: bactdb_pass + PGDB: bactdbtest + volumes: + - /var/lib/postgresql/data + command: true + +db: + image: bactdb_data + environment: + PGUSER: bactdb_user + PGPASSWORD: bactdb_pass + PGDB: bactdbtest + ports: + - "5432:5432" + volumes_from: + - data + +app: + build: . + environment: + PGUSER: bactdb_user + PGPASSWORD: bactdb_pass + PGDB: bactdbtest + ports: + - "8901:8901" + volumes: + - .:/bactdb + links: + - db +