initial commit
This commit is contained in:
commit
93eea1fad0
7
cookiecutter.json
Normal file
7
cookiecutter.json
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"project_name": "Go Project",
|
||||
"project_slug": "{{ cookiecutter.project_name.lower().replace(' ', '-')}}",
|
||||
"mod_name": "{{ cookiecutter.project_name.lower().replace(' ', '').replace('-', '')}}",
|
||||
"docker_username": "djeeberjr",
|
||||
"mod_base": "git.kapelle.org/niklas/{{cookiecutter.project_slug}}"
|
||||
}
|
9
hooks/post_gen_project.sh
Normal file
9
hooks/post_gen_project.sh
Normal file
@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
set -e
|
||||
|
||||
git init
|
||||
|
||||
go mod init {{cookiecutter.mod_base}}
|
||||
|
||||
go mod tidy
|
1
{{cookiecutter.project_slug}}/.dockerignore
Symbolic link
1
{{cookiecutter.project_slug}}/.dockerignore
Symbolic link
@ -0,0 +1 @@
|
||||
.gitignore
|
1
{{cookiecutter.project_slug}}/.gitignore
vendored
Normal file
1
{{cookiecutter.project_slug}}/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
/build
|
22
{{cookiecutter.project_slug}}/Dockerfile
Normal file
22
{{cookiecutter.project_slug}}/Dockerfile
Normal file
@ -0,0 +1,22 @@
|
||||
FROM --platform=$BUILDPLATFORM golang:1.21-alpine as build
|
||||
|
||||
ADD . /app
|
||||
WORKDIR /app
|
||||
|
||||
ARG TARGETARCH
|
||||
ARG TARGETOS
|
||||
|
||||
RUN apk add --no-cache make
|
||||
RUN make build BUILD_ARCH="$TARGETARCH" BUILD_OS="$TARGETOS"
|
||||
|
||||
FROM --platform=$TARGETPLATFORM alpine:latest
|
||||
|
||||
RUN apk add --no-cache make ca-certificates
|
||||
|
||||
WORKDIR /data
|
||||
COPY --from=build /app/build/{{cookiecutter.project_slug}} /app/{{cookiecutter.project_slug}}
|
||||
|
||||
EXPOSE 3000
|
||||
VOLUME [ "/data" ]
|
||||
|
||||
CMD [ "/app/{{cookiecutter.project_slug}}" ]
|
21
{{cookiecutter.project_slug}}/Makefile
Normal file
21
{{cookiecutter.project_slug}}/Makefile
Normal file
@ -0,0 +1,21 @@
|
||||
BINARY = {{cookiecutter.project_slug}}
|
||||
BUILD_DIR = build
|
||||
BUILD_ARCH = $(shell go env GOARCH)
|
||||
BUILD_OS = $(shell go env GOOS)
|
||||
|
||||
.PHONY: all
|
||||
all: clean build
|
||||
|
||||
.PHONY:build
|
||||
build: $(BUILD_DIR)/$(BINARY)
|
||||
|
||||
$(BUILD_DIR)/$(BINARY):
|
||||
GOARCH=$(BUILD_ARCH) GOOS=$(BUILD_OS) go build -o $(BUILD_DIR)/$(BINARY) cmd/{{cookiecutter.project_slug}}.go
|
||||
|
||||
.PHONY:clean
|
||||
clean:
|
||||
rm -rf $(BUILD_DIR)
|
||||
|
||||
.PHONY: docker
|
||||
docker:
|
||||
docker buildx build --platform linux/arm64,linux/amd64,linux/arm/v7,linux/arm64/v8 -t djeeberjr/{{cookiecutter.project_slug}} . --push
|
10
{{cookiecutter.project_slug}}/README.md
Normal file
10
{{cookiecutter.project_slug}}/README.md
Normal file
@ -0,0 +1,10 @@
|
||||
# {{cookiecutter.project_name}}
|
||||
|
||||
## Build
|
||||
|
||||
`make build`
|
||||
|
||||
## Build and push docker image
|
||||
|
||||
`make docker`
|
||||
|
@ -0,0 +1,19 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
{{cookiecutter.mod_name}} "{{cookiecutter.mod_base}}/internal"
|
||||
"github.com/alexflint/go-arg"
|
||||
)
|
||||
|
||||
type args struct {
|
||||
Parameter string `arg:"--parameter,required,env:PARAMETER" placeholder:"PARAMETER"`
|
||||
}
|
||||
|
||||
func main() {
|
||||
var args args
|
||||
arg.MustParse(&args)
|
||||
|
||||
{{cookiecutter.mod_name}}.Start({{cookiecutter.mod_name}}.Config{
|
||||
Parameter: args.Parameter,
|
||||
})
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package {{cookiecutter.mod_name}}
|
||||
|
||||
import "fmt"
|
||||
|
||||
type Config struct {
|
||||
Parameter string
|
||||
}
|
||||
|
||||
func Start(config Config) {
|
||||
fmt.Println("Starting {{cookiecutter.project_slug}}")
|
||||
fmt.Println("Parameter: ", config.Parameter)
|
||||
}
|
Loading…
Reference in New Issue
Block a user