diff --git a/Dockerfile b/Dockerfile index 048901b..6a4fd5a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ COPY . . RUN go build -ldflags="-s -w" -o ./bin/web ./cmd/main.go # Runner stage -FROM alpine:3.21 +FROM alpine:3.21 AS runner WORKDIR /app COPY .env . COPY --from=builder /app/bin/web /app/bin/web diff --git a/docker-compose.yml b/docker-compose.yml index 6ee411f..4bbf5e6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -39,6 +39,7 @@ services: build: context: . dockerfile: Dockerfile + target: runner ports: - ${PORT}:8080 environment: @@ -50,6 +51,18 @@ services: - app command: ["/app/bin/web"] + + test: + build: + context: . + dockerfile: Dockerfile + target: builder + volumes: + - .:/app + command: ["tail", "-f", "/dev/null"] + networks: + - app + networks: app: driver: bridge \ No newline at end of file diff --git a/makefile b/makefile index 54ac98c..5b62eb3 100644 --- a/makefile +++ b/makefile @@ -1,13 +1,17 @@ include .env .PHONY: test test: - @docker compose exec app go test ./app + @docker compose up -d test + @docker compose exec test go test ./... + @docker compose stop test .PHONY: coverage coverage: @mkdir -p coverage - @docker compose exec app go test -coverprofile=coverage.out ./internal/... - @docker compose exec app go tool cover -func=coverage.out -o coverage/coverage.txt + @docker compose up -d test + @docker compose exec test sh -c "go test -coverprofile=coverage.out ./internal/... && go tool cover -func=coverage.out -o coverage/coverage.txt" + @docker cp $(shell docker ps -q -f "name=fortunebet-test-1"):/app/coverage ./ || true + @docker compose stop test .PHONY: build build: