all repos

onasty @ 9f4dd4beef61d8ada28beac0547d46b7d5a9ec13

a one-time notes service
9 files changed, 48 insertions(+), 25 deletions(-)
chore: update dockerizing setup (#129)

* chore: fix runtime docker file name

* chore: add builder image

* chore: dockerize seeder
Author: Smirnov Oleksandr ss2316544@gmail.com
Committed by: GitHub noreply@github.com
Committed at: 2025-06-07 16:12:43 +0300
Parent: 9d9c06c
M Dockerfile
···
        1
        
        -FROM golang:1.24.3-alpine AS builder

      
        2
        
        -

      
        3
        
        -WORKDIR /app

      
        4
        
        -

      
        5
        
        -COPY go.mod go.sum ./

      
        6
        
        -RUN go mod download

      
        
        1
        +FROM onasty:builder AS builder

      
        7
        2
         

      
        8
        3
         COPY cmd cmd

      
        9
        4
         COPY internal internal

      
M Taskfile.yml
···
        5
        5
         

      
        6
        6
         includes:

      
        7
        7
           migrate: ./migrations/Taskfile.yml

      
        8
        
        -  seed: ./cmd/seed/Taskfile.yml

      
        9
        8
         

      
        10
        9
         env:

      
        11
        
        -  DOCKER_BUILDKIT: 1

      
        12
        
        -  COMPOSE_DOCKER_CLI_BUILD: 1

      
        
        10
        +  COMPOSE_BAKE: 1

      
        13
        11
         

      
        14
        12
         vars:

      
        15
        13
           gotest:

      ···
        27
        25
         

      
        28
        26
           docker:down:

      
        29
        27
             aliases: [docker:stop]

      
        30
        
        -    cmds:

      
        31
        
        -      - docker compose stop

      
        
        28
        +    cmd: docker compose stop

      
        
        29
        +

      
        
        30
        +  seed:run:

      
        
        31
        +    - docker compose run --rm seed

      
        32
        32
         

      
        33
        33
           test:

      
        34
        34
             - task: test:unit

      
A builder.Dockerfile
···
        
        1
        +FROM golang:1.24.3-alpine AS builder

      
        
        2
        +

      
        
        3
        +WORKDIR /app

      
        
        4
        +

      
        
        5
        +COPY go.mod go.sum ./

      
        
        6
        +RUN go mod download

      
D cmd/seed/Taskfile.yml
···
        1
        
        -version: "3"

      
        2
        
        -tasks:

      
        3
        
        -  run:

      
        4
        
        -    desc: seeds the database

      
        5
        
        -    dir: ./cmd/seed/

      
        6
        
        -    cmd: go run *.go

      
M cmd/seed/main.go
···
        21
        21
         

      
        22
        22
         func run(ctx context.Context) error {

      
        23
        23
         	cfg := config.NewConfig()

      
        24
        
        -	cfg.PostgresDSN = os.Getenv("SEED_DSN")

      
        25
        24
         

      
        26
        25
         	logger, err := logger.NewCustomLogger(cfg.LogLevel, cfg.LogFormat, cfg.LogShowLine)

      
        27
        26
         	if err != nil {

      
M docker-compose.yml
···
        3
        3
             image: onasty:runtime

      
        4
        4
             build:

      
        5
        5
               context: .

      
        6
        
        -      dockerfile: runtime.dockerfile

      
        
        6
        +      dockerfile: runtime.Dockerfile

      
        
        7
        +    depends_on:

      
        
        8
        +      - builder

      
        
        9
        +

      
        
        10
        +  builder:

      
        
        11
        +    image: onasty:builder

      
        
        12
        +    build:

      
        
        13
        +      context: .

      
        
        14
        +      dockerfile: builder.Dockerfile

      
        7
        15
         

      
        8
        16
           core:

      
        9
        17
             image: onasty:core

      ···
        32
        40
             depends_on:

      
        33
        41
               - runtime

      
        34
        42
               - nats

      
        
        43
        +

      
        
        44
        +  seed:

      
        
        45
        +    image: onasty:seed

      
        
        46
        +    build:

      
        
        47
        +      context: .

      
        
        48
        +      dockerfile: seed.Dockerfile

      
        
        49
        +    entrypoint: ["/seed"]

      
        
        50
        +    env_file: .env

      
        
        51
        +    profiles: [manual]

      
        
        52
        +    depends_on:

      
        
        53
        +      - postgres

      
        35
        54
         

      
        36
        55
           postgres:

      
        37
        56
             image: postgres:16-alpine

      
M mailer/Dockerfile
···
        1
        
        -FROM golang:1.24.3-alpine AS builder

      
        2
        
        -

      
        3
        
        -WORKDIR /app

      
        4
        
        -

      
        5
        
        -COPY go.mod go.sum ./

      
        6
        
        -RUN go mod download

      
        
        1
        +FROM onasty:builder AS builder

      
        7
        2
         

      
        8
        3
         COPY internal internal

      
        9
        4
         COPY mailer mailer

      
A seed.Dockerfile
···
        
        1
        +FROM onasty:builder AS builder

      
        
        2
        +

      
        
        3
        +WORKDIR /app

      
        
        4
        +

      
        
        5
        +COPY internal internal

      
        
        6
        +COPY cmd/seed cmd/seed

      
        
        7
        +

      
        
        8
        +ENV CGO_ENABLED=0 GOOS=linux GOARCH=amd64

      
        
        9
        +RUN --mount=type=cache,target=/root/.cache/go-build,id=onasty-go-build \

      
        
        10
        +    --mount=type=cache,target=/go/pkg/mod,id=onasty-go-mod \

      
        
        11
        +    go build -trimpath -ldflags='-w -s' -o /seed ./cmd/seed

      
        
        12
        +

      
        
        13
        +FROM onasty:runtime

      
        
        14
        +COPY --from=builder /seed /seed

      
        
        15
        +ENTRYPOINT ["/seed"]