Merge pull request '👷 Docker support' (#19) from ada/docker into main
Reviewed-on: #19
This commit is contained in:
commit
1099a79374
7 changed files with 128 additions and 13 deletions
32
.woodpecker/build.yaml
Normal file
32
.woodpecker/build.yaml
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
steps:
|
||||||
|
- name: publish_image
|
||||||
|
image: woodpeckerci/plugin-docker-buildx
|
||||||
|
settings:
|
||||||
|
repo: git.gnous.eu/${CI_REPO_OWNER}/plakken
|
||||||
|
dockerfile: docker/Dockerfile
|
||||||
|
platforms: linux/amd64,linux/arm64/v8,linux/arm
|
||||||
|
registry: https://git.gnous.eu
|
||||||
|
tag: ${CI_COMMIT}
|
||||||
|
username:
|
||||||
|
from_secret: docker_username
|
||||||
|
password:
|
||||||
|
from_secret: docker_password
|
||||||
|
when:
|
||||||
|
branch: ${CI_REPO_DEFAULT_BRANCH}
|
||||||
|
event: push
|
||||||
|
- name: publish_image_tag
|
||||||
|
image: woodpeckerci/plugin-docker-buildx
|
||||||
|
settings:
|
||||||
|
repo: git.gnous.eu/${CI_REPO_OWNER}/plakken
|
||||||
|
dockerfile: docker/Dockerfile
|
||||||
|
platforms: linux/amd64,linux/arm64/v8,linux/arm
|
||||||
|
registry: https://git.gnous.eu
|
||||||
|
tags:
|
||||||
|
- ${CI_COMMIT_TAG##v} # Remove v from tag
|
||||||
|
- stable
|
||||||
|
username:
|
||||||
|
from_secret: docker_username
|
||||||
|
password:
|
||||||
|
from_secret: docker_password
|
||||||
|
when:
|
||||||
|
event: tag
|
28
docker/Dockerfile
Normal file
28
docker/Dockerfile
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
# Build
|
||||||
|
FROM golang:1.22 AS build
|
||||||
|
LABEL authors="gnousEU"
|
||||||
|
|
||||||
|
WORKDIR /build
|
||||||
|
|
||||||
|
COPY go.mod go.sum ./
|
||||||
|
RUN go mod download
|
||||||
|
|
||||||
|
COPY main.go ./
|
||||||
|
COPY internal/ ./internal
|
||||||
|
COPY static/ ./static
|
||||||
|
COPY templates/ ./templates
|
||||||
|
|
||||||
|
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags "-w -s" # Enable static binary, target Linux, remove debug information and strip binary
|
||||||
|
|
||||||
|
# Copy to our image
|
||||||
|
FROM gcr.io/distroless/static-debian12:nonroot
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY --from=build /build/plakken ./
|
||||||
|
|
||||||
|
ENV PLAKKEN_LISTEN ":3000"
|
||||||
|
|
||||||
|
EXPOSE 3000/tcp
|
||||||
|
|
||||||
|
ENTRYPOINT ["/app/plakken"]
|
31
docker/docker-compose.dev.yaml
Normal file
31
docker/docker-compose.dev.yaml
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
version: "3"
|
||||||
|
|
||||||
|
networks:
|
||||||
|
plakken:
|
||||||
|
external: false
|
||||||
|
|
||||||
|
services:
|
||||||
|
server:
|
||||||
|
build:
|
||||||
|
context: ../
|
||||||
|
dockerfile: docker/Dockerfile
|
||||||
|
restart: always
|
||||||
|
container_name: plakken
|
||||||
|
networks:
|
||||||
|
- plakken
|
||||||
|
ports:
|
||||||
|
- "3000:3000"
|
||||||
|
environment:
|
||||||
|
- PLAKKEN_REDIS_ADDRESS=redis:6379
|
||||||
|
- POSTGRES_PASSWORD=gitea
|
||||||
|
- PLAKKEN_REDIS_DB=0
|
||||||
|
- PLAKKEN_URL_LENGTH=5
|
||||||
|
depends_on:
|
||||||
|
- redis
|
||||||
|
redis:
|
||||||
|
image: redis:7-alpine
|
||||||
|
restart: always
|
||||||
|
healthcheck:
|
||||||
|
test: [ "CMD", "redis-cli", "ping" ]
|
||||||
|
networks:
|
||||||
|
- plakken
|
36
docker/docker-compose.yaml
Normal file
36
docker/docker-compose.yaml
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
version: "3"
|
||||||
|
|
||||||
|
networks:
|
||||||
|
plakken:
|
||||||
|
external: false
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
redis:
|
||||||
|
driver: local
|
||||||
|
|
||||||
|
services:
|
||||||
|
server:
|
||||||
|
image: git.gnous.eu/gnouseu/plakken:latest
|
||||||
|
restart: always
|
||||||
|
container_name: plakken
|
||||||
|
read_only: true
|
||||||
|
networks:
|
||||||
|
- plakken
|
||||||
|
ports:
|
||||||
|
- "3000:3000"
|
||||||
|
environment:
|
||||||
|
- PLAKKEN_REDIS_ADDRESS=redis:6379
|
||||||
|
- POSTGRES_PASSWORD=gitea
|
||||||
|
- PLAKKEN_REDIS_DB=0
|
||||||
|
- PLAKKEN_URL_LENGTH=5
|
||||||
|
depends_on:
|
||||||
|
- redis
|
||||||
|
redis:
|
||||||
|
image: redis:7-alpine
|
||||||
|
restart: always
|
||||||
|
healthcheck:
|
||||||
|
test: [ "CMD", "redis-cli", "ping" ]
|
||||||
|
networks:
|
||||||
|
- plakken
|
||||||
|
volumes:
|
||||||
|
- redis:/data
|
5
go.mod
5
go.mod
|
@ -2,10 +2,7 @@ module git.gnous.eu/gnouseu/plakken
|
||||||
|
|
||||||
go 1.22
|
go 1.22
|
||||||
|
|
||||||
require (
|
require github.com/redis/go-redis/v9 v9.4.0
|
||||||
github.com/joho/godotenv v1.5.1
|
|
||||||
github.com/redis/go-redis/v9 v9.4.0
|
|
||||||
)
|
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/cespare/xxhash/v2 v2.2.0 // indirect
|
github.com/cespare/xxhash/v2 v2.2.0 // indirect
|
||||||
|
|
2
go.sum
2
go.sum
|
@ -6,7 +6,5 @@ github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj
|
||||||
github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||||
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=
|
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=
|
||||||
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
|
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
|
||||||
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
|
|
||||||
github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
|
|
||||||
github.com/redis/go-redis/v9 v9.4.0 h1:Yzoz33UZw9I/mFhx4MNrB6Fk+XHO1VukNcCa1+lwyKk=
|
github.com/redis/go-redis/v9 v9.4.0 h1:Yzoz33UZw9I/mFhx4MNrB6Fk+XHO1VukNcCa1+lwyKk=
|
||||||
github.com/redis/go-redis/v9 v9.4.0/go.mod h1:hdY0cQFCN4fnSYT6TkisLufl/4W5UIXyv0b/CLO2V2M=
|
github.com/redis/go-redis/v9 v9.4.0/go.mod h1:hdY0cQFCN4fnSYT6TkisLufl/4W5UIXyv0b/CLO2V2M=
|
||||||
|
|
|
@ -4,8 +4,6 @@ import (
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
||||||
"github.com/joho/godotenv"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// InitConfig Structure for program initialisation
|
// InitConfig Structure for program initialisation
|
||||||
|
@ -20,11 +18,6 @@ type InitConfig struct {
|
||||||
|
|
||||||
// GetConfig Initialise configuration form .env
|
// GetConfig Initialise configuration form .env
|
||||||
func GetConfig() InitConfig {
|
func GetConfig() InitConfig {
|
||||||
err := godotenv.Load()
|
|
||||||
if err != nil {
|
|
||||||
log.Fatalf("Error loading .env file: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
listenAddress := os.Getenv("PLAKKEN_LISTEN")
|
listenAddress := os.Getenv("PLAKKEN_LISTEN")
|
||||||
redisAddress := os.Getenv("PLAKKEN_REDIS_ADDRESS")
|
redisAddress := os.Getenv("PLAKKEN_REDIS_ADDRESS")
|
||||||
db := os.Getenv("PLAKKEN_REDIS_DB")
|
db := os.Getenv("PLAKKEN_REDIS_DB")
|
||||||
|
|
Loading…
Reference in a new issue