aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/docker.yaml22
-rw-r--r--_example/simple/Dockerfile45
2 files changed, 67 insertions, 0 deletions
diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml
new file mode 100644
index 0000000..f2393e6
--- /dev/null
+++ b/.github/workflows/docker.yaml
@@ -0,0 +1,22 @@
+name: dockerfile
+
+on:
+ workflow_dispatch:
+ push:
+ tags:
+ - 'v*'
+ pull_request:
+ branches: [ master ]
+
+jobs:
+ dockerfile:
+ name: Run Dockerfiles in examples
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Run example - simple
+ run: |
+ cd ./_example/simple
+ docker build -t simple .
+ docker run simple | grep 99\ こんにちわ世界099
diff --git a/_example/simple/Dockerfile b/_example/simple/Dockerfile
new file mode 100644
index 0000000..2a5b472
--- /dev/null
+++ b/_example/simple/Dockerfile
@@ -0,0 +1,45 @@
+# =============================================================================
+# Multi-stage Dockerfile Example
+# =============================================================================
+# This is a simple Dockerfile that will build an image of scratch-base image.
+# Usage:
+# docker build -t simple:local . && docker run --rm simple:local
+# =============================================================================
+
+# -----------------------------------------------------------------------------
+# Build Stage
+# -----------------------------------------------------------------------------
+FROM golang:alpine AS build
+
+# Important:
+# Because this is a CGO enabled package, you are required to set it as 1.
+ENV CGO_ENABLED=1
+
+RUN apk add --no-cache \
+ # Important: required for go-sqlite3
+ gcc \
+ # Required for Alpine
+ musl-dev
+
+WORKDIR /workspace
+
+COPY . /workspace/
+
+RUN \
+ go mod init github.com/mattn/sample && \
+ go mod tidy && \
+ go install -ldflags="-s -w -extldflags \"-static\"" ./simple.go
+
+RUN \
+ # Smoke test
+ set -o pipefail; \
+ /go/bin/simple | grep 99\ こんにちわ世界099
+
+# -----------------------------------------------------------------------------
+# Main Stage
+# -----------------------------------------------------------------------------
+FROM scratch
+
+COPY --from=build /go/bin/simple /usr/local/bin/simple
+
+ENTRYPOINT [ "/usr/local/bin/simple" ]