nginx-golang-postgres: add dev envs config (#275)
* Add Docker Desktop Development Environments config * Upgrade to Go 1.18 * Replace nginx build with image + read-only bind mount Signed-off-by: Milas Bowman <milas.bowman@docker.com>pull/270/head
parent
9d547d23fb
commit
7f5179ea3e
@ -0,0 +1,50 @@ |
||||
services: |
||||
backend: |
||||
build: |
||||
context: backend |
||||
target: dev-envs |
||||
volumes: |
||||
- /var/run/docker.sock:/var/run/docker.sock |
||||
secrets: |
||||
- db-password |
||||
depends_on: |
||||
db: |
||||
condition: service_healthy |
||||
|
||||
db: |
||||
image: postgres |
||||
restart: always |
||||
user: postgres |
||||
secrets: |
||||
- db-password |
||||
volumes: |
||||
- db-data:/var/lib/postgresql/data |
||||
environment: |
||||
- POSTGRES_DB=example |
||||
- POSTGRES_PASSWORD_FILE=/run/secrets/db-password |
||||
expose: |
||||
- 5432 |
||||
healthcheck: |
||||
test: [ "CMD", "pg_isready" ] |
||||
interval: 10s |
||||
timeout: 5s |
||||
retries: 5 |
||||
|
||||
proxy: |
||||
image: nginx |
||||
volumes: |
||||
- type: bind |
||||
source: ./proxy/nginx.conf |
||||
target: /etc/nginx/conf.d/default.conf |
||||
read_only: true |
||||
ports: |
||||
- 80:80 |
||||
depends_on: |
||||
- backend |
||||
|
||||
volumes: |
||||
db-data: |
||||
|
||||
secrets: |
||||
db-password: |
||||
file: db/password.txt |
@ -1,10 +1,41 @@ |
||||
FROM golang:1.13-alpine AS build |
||||
WORKDIR /go/src/github.com/org/repo |
||||
# syntax=docker/dockerfile:1.4 |
||||
FROM --platform=$BUILDPLATFORM golang:1.18-alpine AS builder |
||||
|
||||
WORKDIR /code |
||||
|
||||
ENV CGO_ENABLED 0 |
||||
ENV GOPATH /go |
||||
ENV GOCACHE /go-build |
||||
|
||||
COPY go.mod go.sum ./ |
||||
RUN --mount=type=cache,target=/go/pkg/mod/cache \ |
||||
go mod download |
||||
|
||||
COPY . . |
||||
|
||||
RUN go build -o server . |
||||
RUN --mount=type=cache,target=/go/pkg/mod/cache \ |
||||
--mount=type=cache,target=/go-build \ |
||||
go build -o bin/backend main.go |
||||
|
||||
CMD ["/code/bin/backend"] |
||||
|
||||
FROM builder as dev-envs |
||||
|
||||
RUN <<EOF |
||||
apk update |
||||
apk add git |
||||
EOF |
||||
|
||||
RUN <<EOF |
||||
addgroup -S docker |
||||
adduser -S --shell /bin/bash --ingroup docker vscode |
||||
EOF |
||||
|
||||
# install Docker tools (cli, buildx, compose) |
||||
COPY --from=gloursdocker/docker / / |
||||
|
||||
CMD ["go", "run", "main.go"] |
||||
|
||||
FROM alpine:3.12 |
||||
EXPOSE 8000 |
||||
COPY --from=build /go/src/github.com/org/repo/server /server |
||||
CMD ["/server"] |
||||
FROM scratch |
||||
COPY --from=builder /code/bin/backend /usr/local/bin/backend |
||||
CMD ["/usr/local/bin/backend"] |
||||
|
@ -1,10 +1,11 @@ |
||||
module github.com/org/repo |
||||
module github.com/docker/awesome-compose/nginx-golang-postgres/backend |
||||
|
||||
go 1.13 |
||||
go 1.18 |
||||
|
||||
require ( |
||||
github.com/gorilla/context v1.1.1 |
||||
github.com/gorilla/handlers v1.3.0 |
||||
github.com/gorilla/mux v1.6.2 |
||||
github.com/lib/pq v1.10.3 |
||||
) |
||||
|
||||
require github.com/gorilla/context v1.1.1 // indirect |
||||
|
@ -0,0 +1,8 @@ |
||||
github.com/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8= |
||||
github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= |
||||
github.com/gorilla/handlers v1.3.0 h1:tsg9qP3mjt1h4Roxp+M1paRjrVBfPSOpBuVclh6YluI= |
||||
github.com/gorilla/handlers v1.3.0/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= |
||||
github.com/gorilla/mux v1.6.2 h1:Pgr17XVTNXAk3q/r4CpKzC5xBM/qW1uVLV+IhRZpIIk= |
||||
github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= |
||||
github.com/lib/pq v1.10.3 h1:v9QZf2Sn6AmjXtQeFpdoq/eaNtYP6IN+7lcrygsIAtg= |
||||
github.com/lib/pq v1.10.3/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= |
@ -1,2 +0,0 @@ |
||||
FROM nginx:1.13-alpine |
||||
COPY conf /etc/nginx/conf.d/default.conf |
Loading…
Reference in new issue