jlelse
/
kis3
Archived
1
Fork 0

Add Dockerfile

This commit is contained in:
Jan-Lukas Else 2019-04-03 08:21:25 +02:00
parent bfe6fa8a5a
commit c2c384cf65
4 changed files with 34 additions and 6 deletions

4
.dockerignore Normal file
View File

@ -0,0 +1,4 @@
.idea
data
.dockerignore
Dockerfile

22
Dockerfile Normal file
View File

@ -0,0 +1,22 @@
FROM golang:1.12-alpine as packr
RUN apk add --no-cache git
RUN go get github.com/gobuffalo/packr/v2/packr2
FROM golang:1.12-alpine as build
COPY --from=packr /go/bin/packr2 /go/bin
ADD . /app
WORKDIR /app
RUN apk add --no-cache git gcc musl-dev
RUN GO111MODULE=on packr2
RUN go build kis3.dev/kis3
FROM alpine:3.9
RUN adduser -S -D -H -h /app kis3
COPY --from=build /app/kis3 /app/
RUN chown -R kis3 /app
USER kis3
WORKDIR /app
RUN mkdir data
VOLUME ["/app/data"]
EXPOSE 8080
CMD ["./kis3"]

View File

@ -3,6 +3,7 @@ package main
import ( import (
"database/sql" "database/sql"
"fmt" "fmt"
"github.com/gobuffalo/packr/v2"
"github.com/golang-migrate/migrate/v4" "github.com/golang-migrate/migrate/v4"
"github.com/golang-migrate/migrate/v4/database/sqlite3" "github.com/golang-migrate/migrate/v4/database/sqlite3"
_ "github.com/mattn/go-sqlite3" _ "github.com/mattn/go-sqlite3"
@ -30,7 +31,9 @@ func initDatabase() (database *Database, e error) {
} }
func migrateDatabase(database *sql.DB) (e error) { func migrateDatabase(database *sql.DB) (e error) {
sourceDriver, e := (&helpers.PackrSource{}).Open("") sourceDriver, e := (&helpers.PackrSource{
Box: packr.New("migrations", "migrations"),
}).Open("")
if e != nil { if e != nil {
return return
} }

View File

@ -15,13 +15,13 @@ import (
type PackrSource struct { type PackrSource struct {
lock sync.Mutex lock sync.Mutex
box *packr.Box Box *packr.Box
migrations *source.Migrations migrations *source.Migrations
} }
func (s *PackrSource) loadMigrations() (*source.Migrations, error) { func (s *PackrSource) loadMigrations() (*source.Migrations, error) {
migrations := source.NewMigrations() migrations := source.NewMigrations()
for _, filename := range s.box.List() { for _, filename := range s.Box.List() {
migration, err := source.Parse(filename) migration, err := source.Parse(filename)
if err != nil { if err != nil {
return nil, err return nil, err
@ -34,7 +34,6 @@ func (s *PackrSource) loadMigrations() (*source.Migrations, error) {
func (s *PackrSource) Open(url string) (source.Driver, error) { func (s *PackrSource) Open(url string) (source.Driver, error) {
s.lock.Lock() s.lock.Lock()
defer s.lock.Unlock() defer s.lock.Unlock()
s.box = packr.New("migrations", "../migrations")
if migrations, err := s.loadMigrations(); err != nil { if migrations, err := s.loadMigrations(); err != nil {
return nil, err return nil, err
} else { } else {
@ -78,7 +77,7 @@ func (s *PackrSource) ReadUp(version uint) (r io.ReadCloser, identifier string,
if migration, ok := s.migrations.Up(version); !ok { if migration, ok := s.migrations.Up(version); !ok {
return nil, "", os.ErrNotExist return nil, "", os.ErrNotExist
} else { } else {
b, _ := s.box.Find(migration.Raw) b, _ := s.Box.Find(migration.Raw)
return ioutil.NopCloser(bytes.NewBuffer(b)), return ioutil.NopCloser(bytes.NewBuffer(b)),
migration.Identifier, migration.Identifier,
nil nil
@ -89,7 +88,7 @@ func (s *PackrSource) ReadDown(version uint) (r io.ReadCloser, identifier string
if migration, ok := s.migrations.Down(version); !ok { if migration, ok := s.migrations.Down(version); !ok {
return nil, "", migrate.ErrNilVersion return nil, "", migrate.ErrNilVersion
} else { } else {
b := s.box.Bytes(migration.Raw) b := s.Box.Bytes(migration.Raw)
return ioutil.NopCloser(bytes.NewBuffer(b)), return ioutil.NopCloser(bytes.NewBuffer(b)),
migration.Identifier, migration.Identifier,
nil nil