Переглянути джерело

onboarding w tag and tests

Alexander Belanger 5 роки тому
батько
коміт
3a97c15ba9
2 змінених файлів з 26 додано та 13 видалено
  1. 3 1
      README.md
  2. 23 12
      docker/Dockerfile

+ 3 - 1
README.md

@@ -14,4 +14,6 @@ From the root directory, run `go test ./...` to run all tests and ensure the bui
 
 ### Building
 
-From the root directory, run `DOCKER_BUILDKIT=1 docker build . --file ./docker/Dockerfile`. 
+From the root directory, run `DOCKER_BUILDKIT=1 docker build . --file ./docker/Dockerfile -t porter`. Then you can run `docker run -p 8080:8080 porter`. 
+
+To build the test container, run `DOCKER_BUILDKIT=1 docker build . --file ./docker/Dockerfile -t porter --target porter-test`. 

+ 23 - 12
docker/Dockerfile

@@ -1,8 +1,8 @@
 # syntax=docker/dockerfile:1.1.7-experimental
 
-# Build environment for app
-# -------------------------
-FROM golang:1.15-alpine as build-env-1
+# Base Go environment
+# -------------------
+FROM golang:1.15-alpine as base
 WORKDIR /porter
 
 RUN apk update && apk add --no-cache gcc musl-dev git
@@ -15,13 +15,26 @@ COPY /server ./server
 RUN --mount=type=cache,target=$GOPATH/pkg/mod \
     go mod download
 
+# Go build environment
+# --------------------
+FROM base AS build-go
+
 RUN --mount=type=cache,target=/root/.cache/go-build \
+    --mount=type=cache,target=$GOPATH/pkg/mod \
     go build -ldflags '-w -s' -a -o ./bin/app ./cmd/app && \
     go build -ldflags '-w -s' -a -o ./bin/migrate ./cmd/migrate
-    
-# Build environment for dashboard
-# -------------------------------
-FROM node:latest as build-env-2
+
+# Go test environment
+# -------------------
+FROM base AS porter-test
+
+RUN --mount=type=cache,target=/root/.cache/go-build \
+    --mount=type=cache,target=$GOPATH/pkg/mod \
+    go test ./...
+
+# Webpack build environment
+# -------------------------
+FROM node:latest as build-webpack
 WORKDIR /webpack
 
 COPY ./dashboard ./
@@ -30,8 +43,6 @@ RUN npm i
 
 ENV NODE_ENV=production
 
-# COPY /dashboard/src /webpack/src
-
 RUN npm run build
 
 # Deployment environment
@@ -39,9 +50,9 @@ RUN npm run build
 FROM alpine
 RUN apk update
 
-COPY --from=build-env-1 /porter/bin/app /porter/
-COPY --from=build-env-1 /porter/bin/migrate /porter/
-COPY --from=build-env-2 /webpack/build /porter/static
+COPY --from=build-go /porter/bin/app /porter/
+COPY --from=build-go /porter/bin/migrate /porter/
+COPY --from=build-webpack /webpack/build /porter/static
 
 ENV DEBUG=false
 ENV STATIC_FILE_PATH=/porter/static