This commit is contained in:
Owen Schwartz 2024-12-24 16:28:10 -05:00
parent 447a983790
commit a88701acf1
No known key found for this signature in database
GPG key ID: 8271FDFFD9E0CCBD
4 changed files with 59 additions and 1 deletions

6
.dockerignore Normal file
View file

@ -0,0 +1,6 @@
.gitignore
.dockerignore
newt
*.json
README.md
Makefile

View file

@ -0,0 +1,31 @@
FROM golang:1.21.5-alpine AS builder
# Set the working directory inside the container
WORKDIR /app
# Copy go mod and sum files
COPY go.mod go.sum ./
# Download all dependencies
RUN go mod download
# Copy the source code into the container
COPY . .
# Build the application
RUN CGO_ENABLED=0 GOOS=linux go build -o /newt
# Start a new stage from scratch
FROM ubuntu:22.04 AS runner
# Copy the pre-built binary file from the previous stage and the entrypoint script
COPY --from=builder /newt /usr/local/bin/
COPY entrypoint.sh /
RUN chmod +x /entrypoint.sh
# Copy the entrypoint script
ENTRYPOINT ["/entrypoint.sh"]
# Command to run the executable
CMD ["newt"]

View file

@ -1 +1 @@
# newt
# Newt

21
entrypoint.sh Normal file
View file

@ -0,0 +1,21 @@
#!/bin/sh
# Sample from https://github.com/traefik/traefik-library-image/blob/5070edb25b03cca6802d75d5037576c840f73fdd/v3.1/alpine/entrypoint.sh
set -e
# first arg is `-f` or `--some-option`
if [ "${1#-}" != "$1" ]; then
set -- newt "$@"
fi
# if our command is a valid newt subcommand, let's invoke it through newt instead
# (this allows for "docker run newt version", etc)
if newt "$1" --help >/dev/null 2>&1
then
set -- newt "$@"
else
echo "= '$1' is not a newt command: assuming shell execution." 1>&2
fi
exec "$@"