4
0
Эх сурвалжийг харах

add configuration to use spring-postgres sample with Docker Dev Environments feature (#258)

* add configuration to use spring-postgres sample with Docker Dev Environments feature

Co-authored-by: Milas Bowman <milasb@gmail.com>
Signed-off-by: Guillaume Lours <guillaume.lours@docker.com>
Guillaume Lours 3 жил өмнө
parent
commit
9d547d23fb

+ 34 - 0
spring-postgres/.docker/docker-compose.yaml

@@ -0,0 +1,34 @@
+services:
+  backend:
+    build:
+      context: backend
+      target: dev-envs
+    ports:
+      - 8080:8080
+    environment:
+      - POSTGRES_DB=example
+    networks:
+      - spring-postgres
+    volumes:
+      - /var/run/docker.sock:/var/run/docker.sock
+  db:
+    image: postgres
+    restart: always
+    secrets:
+      - db-password
+    volumes:
+      - db-data:/var/lib/postgresql/data
+    networks:
+      - spring-postgres
+    environment:
+      - POSTGRES_DB=example
+      - POSTGRES_PASSWORD_FILE=/run/secrets/db-password
+    expose:
+      - 5432
+volumes:
+  db-data:
+secrets:
+  db-password:
+    file: db/password.txt
+networks:
+  spring-postgres:

+ 8 - 0
spring-postgres/README.md

@@ -77,3 +77,11 @@ Removing spring-postgres_db_1      ... done
 Removing spring-postgres_backend_1 ... done
 Removing network spring-postgres_default
 ```
+
+## Use with Docker Development Environments
+
+You can use this sample with the Dev Environments feature of Docker Desktop.  
+To develop directly frontend or the backend services inside containers, you just need to use the https git url of the sample:  
+`https://github.com/docker/awesome-compose/tree/master/spring-postgres`
+
+![page](../dev-envs.png)

+ 20 - 1
spring-postgres/backend/Dockerfile

@@ -1,3 +1,5 @@
+# syntax=docker/dockerfile:1.4
+
 FROM --platform=$BUILDPLATFORM maven:3.8.5-eclipse-temurin-17 AS builder
 WORKDIR /workdir/server
 COPY pom.xml /workdir/server/pom.xml
@@ -5,7 +7,24 @@ RUN mvn dependency:go-offline
 
 COPY src /workdir/server/src
 RUN mvn install
-RUN mkdir  -p target/depency
+
+FROM builder AS dev-envs
+RUN <<EOF
+apt-get update
+apt-get install -y --no-install-recommends git
+EOF
+
+RUN <<EOF
+useradd -s /bin/bash -m vscode
+groupadd docker
+usermod -aG docker vscode
+EOF
+# install Docker tools (cli, buildx, compose)
+COPY --from=gloursdocker/docker / /
+CMD ["mvn", "spring-boot:run"]
+
+FROM builder as prepare-production
+RUN mkdir -p target/dependency
 WORKDIR /workdir/server/target/dependency
 RUN jar -xf ../*.jar