Created
July 25, 2022 15:15
-
-
Save TadayoshiOtsuka/37ca54579c956dfa7c0da704c359da5a to your computer and use it in GitHub Desktop.
私的GolangのDockerfile
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Config file for [Air](https://github.com/cosmtrek/air) in TOML format | |
# Working directory | |
# . or absolute path, please note that the directories following must be under root. | |
root = "." | |
tmp_dir = "tmp" | |
[build] | |
# Just plain old shell command. You could use `make` as well. | |
cmd = "go build -o ./tmp/main ./src/main.go" | |
# Binary file yields from `cmd`. | |
bin = "tmp/main" | |
# Customize binary, can setup environment variables when run your app. | |
full_bin = "APP_ENV=dev APP_USER=air ./tmp/main" | |
# Watch these filename extensions. | |
include_ext = ["go", "tpl", "tmpl", "html"] | |
# Ignore these filename extensions or directories. | |
exclude_dir = ["assets", "tmp", "vendor", "frontend/node_modules"] | |
# Watch these directories if you specified. | |
include_dir = [] | |
# Exclude files. | |
exclude_file = [] | |
# Exclude specific regular expressions. | |
exclude_regex = ["_test.go"] | |
# Exclude unchanged files. | |
exclude_unchanged = true | |
# Follow symlink for directories | |
follow_symlink = true | |
# This log file places in your tmp_dir. | |
log = "air.log" | |
# It's not necessary to trigger build each time file changes if it's too frequent. | |
delay = 1000 # ms | |
# Stop running old binary when build errors occur. | |
stop_on_error = true | |
# Send Interrupt signal before killing process (windows does not support this feature) | |
send_interrupt = false | |
# Delay after sending Interrupt signal | |
kill_delay = 500 # ms | |
[log] | |
# Show log time | |
time = false | |
[color] | |
# Customize each part's color. If no color found, use the raw app log. | |
main = "magenta" | |
watcher = "cyan" | |
build = "yellow" | |
runner = "green" | |
[misc] | |
# Delete tmp directory on exit | |
clean_on_exit = true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
version: "3.8" | |
services: | |
server: | |
build: | |
context: . | |
dockerfile: Dockerfile | |
target: Dev | |
stdin_open: true | |
tty: true | |
ports: | |
- 80:80 | |
volumes: | |
- type: bind | |
source: src | |
target: /go/app/src |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ============ | |
# Dev | |
# ============ | |
FROM golang:1.18.3 as Dev | |
ENV TZ=Asia/Tokyo | |
ENV CGO_ENABLED=0 | |
ENV GOOS=linux | |
ENV GOARCH=amd64 | |
ENV ROOTPATH=/go/app | |
WORKDIR ${ROOTPATH} | |
RUN go install github.com/cosmtrek/air@v1.40.0 | |
COPY go.mod go.sum .air.toml ./ | |
RUN go mod download | |
COPY src/ ${ROOTPATH}/src/ | |
CMD ["air", "-c", ".air.toml"] | |
# ============ | |
# Builder | |
# ============ | |
FROM golang:1.18.3 as Builder | |
ENV TZ=Asia/Tokyo | |
ENV CGO_ENABLED=0 | |
ENV GOOS=linux | |
ENV GOARCH=amd64 | |
ENV ROOTPATH=/go/app | |
WORKDIR ${ROOTPATH} | |
COPY go.mod go.sum ./ | |
RUN go mod download | |
COPY src/ ${ROOTPATH}/src/ | |
RUN go build \ | |
-o ${ROOTPATH}/bin/main \ | |
-ldflags '-s -w' \ | |
./src/main.go | |
# ============ | |
# Deploy | |
# ============ | |
FROM gcr.io/distroless/static-debian11 | |
ENV TZ=Asia/Tokyo | |
COPY --from=Builder /go/app/bin/main /app/main | |
EXPOSE 8080 | |
USER nonroot:nonroot | |
CMD ["/app/main"] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment