refactor Dockerfile and docker-compose.yml for multi-stage builds; update makefile for test execution
This commit is contained in:
parent
29642bfd14
commit
8d7911375b
|
|
@ -8,7 +8,7 @@ COPY . .
|
||||||
RUN go build -ldflags="-s -w" -o ./bin/web ./cmd/main.go
|
RUN go build -ldflags="-s -w" -o ./bin/web ./cmd/main.go
|
||||||
|
|
||||||
# Runner stage
|
# Runner stage
|
||||||
FROM alpine:3.21
|
FROM alpine:3.21 AS runner
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY .env .
|
COPY .env .
|
||||||
COPY --from=builder /app/bin/web /app/bin/web
|
COPY --from=builder /app/bin/web /app/bin/web
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,7 @@ services:
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
|
target: runner
|
||||||
ports:
|
ports:
|
||||||
- ${PORT}:8080
|
- ${PORT}:8080
|
||||||
environment:
|
environment:
|
||||||
|
|
@ -50,6 +51,18 @@ services:
|
||||||
- app
|
- app
|
||||||
command: ["/app/bin/web"]
|
command: ["/app/bin/web"]
|
||||||
|
|
||||||
|
|
||||||
|
test:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
target: builder
|
||||||
|
volumes:
|
||||||
|
- .:/app
|
||||||
|
command: ["tail", "-f", "/dev/null"]
|
||||||
|
networks:
|
||||||
|
- app
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
app:
|
app:
|
||||||
driver: bridge
|
driver: bridge
|
||||||
10
makefile
10
makefile
|
|
@ -1,13 +1,17 @@
|
||||||
include .env
|
include .env
|
||||||
.PHONY: test
|
.PHONY: test
|
||||||
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
|
.PHONY: coverage
|
||||||
coverage:
|
coverage:
|
||||||
@mkdir -p coverage
|
@mkdir -p coverage
|
||||||
@docker compose exec app go test -coverprofile=coverage.out ./internal/...
|
@docker compose up -d test
|
||||||
@docker compose exec app go tool cover -func=coverage.out -o coverage/coverage.txt
|
@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
|
.PHONY: build
|
||||||
build:
|
build:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user