Просмотр исходного кода

add configuration to use sparkjave-mysql sample with Docker Dev Environments feature (#257)

add configuration to use sparkjava-mysql sample with Docker Dev Environments feature

Signed-off-by: Guillaume Lours <guillaume.lours@docker.com>
Guillaume Lours 3 лет назад
Родитель
Сommit
eb837eba55
3 измененных файлов с 57 добавлено и 0 удалено
  1. 32 0
      sparkjava-mysql/.docker/docker-compose.yaml
  2. 8 0
      sparkjava-mysql/README.md
  3. 17 0
      sparkjava-mysql/backend/Dockerfile

+ 32 - 0
sparkjava-mysql/.docker/docker-compose.yaml

@@ -0,0 +1,32 @@
+services:
+  backend:
+    build:
+      context: backend
+      target: dev-envs
+    ports:
+      - 8080:8080
+    secrets:
+      - db-password
+    volumes:
+      - /var/run/docker.sock:/var/run/docker.sock
+  db:
+    # We use a mariadb image which supports both amd64 & arm64 architecture
+    image: mariadb:10.6.4-focal
+    # If you really want to use MySQL, uncomment the following line
+    #image: mysql:8.0.27
+    restart: always
+    secrets:
+      - db-password
+    volumes:
+      - db-data:/var/lib/mysql
+    environment:
+      - MYSQL_DATABASE=example
+      - MYSQL_ROOT_PASSWORD_FILE=/run/secrets/db-password
+    expose:
+      - 3306
+      - 33060   
+volumes:
+  db-data:
+secrets:
+  db-password:
+    file: db/password.txt

+ 8 - 0
sparkjava-mysql/README.md

@@ -75,3 +75,11 @@ Removing sparkjava-mysql_backend_1 ... done
 Removing sparkjava-mysql_db_1      ... done
 Removing sparkjava-mysql_db_1      ... done
 Removing network sparkjava-mysql_default
 Removing network sparkjava-mysql_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/sparkjava-mysql`
+
+![page](../dev-envs.png)

+ 17 - 0
sparkjava-mysql/backend/Dockerfile

@@ -1,3 +1,5 @@
+# syntax=docker/dockerfile:1.4
+
 FROM --platform=$BUILDPLATFORM maven:3.8.5-eclipse-temurin-17 AS build
 FROM --platform=$BUILDPLATFORM maven:3.8.5-eclipse-temurin-17 AS build
 WORKDIR /workdir/server
 WORKDIR /workdir/server
 COPY pom.xml /workdir/server/pom.xml
 COPY pom.xml /workdir/server/pom.xml
@@ -7,6 +9,21 @@ COPY src /workdir/server/src
 
 
 RUN mvn --batch-mode clean compile assembly:single
 RUN mvn --batch-mode clean compile assembly:single
 
 
+FROM build 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 ["java", "-jar", "target/app.jar" ]
+
 FROM eclipse-temurin:17-jre-focal
 FROM eclipse-temurin:17-jre-focal
 ARG DEPENDENCY=/workdir/server/target
 ARG DEPENDENCY=/workdir/server/target
 EXPOSE 8080
 EXPOSE 8080