Dockerize app
This commit is contained in:
+3
-1
@@ -1,3 +1,5 @@
|
||||
.env
|
||||
config.yaml
|
||||
config/config.yaml
|
||||
mydeploys
|
||||
quay
|
||||
config
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
FROM golang:1.25-alpine AS builder
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
RUN apk add --no-cache build-base libwebp-dev
|
||||
|
||||
COPY go.mod go.sum ./
|
||||
RUN go mod download
|
||||
|
||||
COPY . .
|
||||
|
||||
RUN go build -tags "fts5" -o quay
|
||||
|
||||
FROM alpine:3.19
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
RUN apk add --no-cache libwebp libstdc++
|
||||
|
||||
RUN adduser -D -g '' appuser
|
||||
|
||||
COPY --from=builder /app/quay .
|
||||
|
||||
RUN chown -R appuser:appuser /app
|
||||
|
||||
USER appuser
|
||||
|
||||
ENV PORT=4321
|
||||
ENV CONFIG_DIR=/config
|
||||
|
||||
EXPOSE 4321
|
||||
|
||||
CMD ["./quay"]
|
||||
@@ -0,0 +1,21 @@
|
||||
services:
|
||||
quay:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
container_name: quay
|
||||
env_file:
|
||||
- .env
|
||||
ports:
|
||||
- '8080:4321'
|
||||
volumes:
|
||||
- ./config:/config
|
||||
- ./mydeploys:/deploys
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test:
|
||||
['CMD', 'wget', '--no-verbose', '--tries=1', '--spider', 'http://localhost/health']
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 40s
|
||||
@@ -3,7 +3,8 @@ package envconfig
|
||||
import "os"
|
||||
|
||||
type EnvConfig struct {
|
||||
Port string
|
||||
Port string
|
||||
ConfigDir string
|
||||
}
|
||||
|
||||
func Load() EnvConfig {
|
||||
@@ -12,7 +13,13 @@ func Load() EnvConfig {
|
||||
port = "4321"
|
||||
}
|
||||
|
||||
configDir := os.Getenv("CONFIG_DIR")
|
||||
if configDir == "" {
|
||||
configDir = "./"
|
||||
}
|
||||
|
||||
return EnvConfig{
|
||||
Port: port,
|
||||
Port: port,
|
||||
ConfigDir: configDir,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
"path/filepath"
|
||||
"quay/app/routes"
|
||||
"quay/internal/config"
|
||||
"quay/internal/envconfig"
|
||||
@@ -16,7 +17,8 @@ func main() {
|
||||
|
||||
envCfg := envconfig.Load()
|
||||
|
||||
cfg, err := config.Load("config.yaml")
|
||||
configFilePath := filepath.Join(envCfg.ConfigDir, "config.yaml")
|
||||
cfg, err := config.Load(configFilePath)
|
||||
if err != nil {
|
||||
panic("Failed to load config: " + err.Error())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user