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

add spring-postgres application sample

Signed-off-by: Anca Iordache <anca.iordache@docker.com>
Anca Iordache 6 лет назад
Родитель
Сommit
cc8e56e4b7

+ 12 - 0
samples/spring-postgres/backend/Dockerfile

@@ -0,0 +1,12 @@
+FROM maven:3.5-jdk-9 AS build
+COPY pom.xml .
+RUN mvn --batch-mode dependency:resolve
+COPY . .
+RUN mvn --batch-mode package
+RUN cp target/*jar target/app.jar
+
+FROM openjdk:9-jre
+EXPOSE 8080
+VOLUME /tmp
+COPY --from=build target/app.jar app.jar
+ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

+ 71 - 0
samples/spring-postgres/backend/pom.xml

@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.company</groupId>
+    <artifactId>project</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <packaging>jar</packaging>
+
+    <name>New App</name>
+    <description>My new SpringBoot app</description>
+
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.0.3.RELEASE</version>
+        <relativePath/>
+    </parent>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <java.version>1.8</java.version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-jersey</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.session</groupId>
+            <artifactId>spring-session-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-devtools</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-freemarker</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>javax.xml.bind</groupId>
+            <artifactId>jaxb-api</artifactId>
+            <version>2.3.0</version>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+</project>

+ 16 - 0
samples/spring-postgres/backend/src/main/java/com/company/project/Application.java

@@ -0,0 +1,16 @@
+package com.company.project;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+
+@SpringBootApplication
+@EnableAutoConfiguration
+@ComponentScan(basePackages = {"com.company.project"})
+public class Application {
+
+    public static void main(String[] args) {
+        SpringApplication.run(Application.class, args);
+    }
+}

+ 16 - 0
samples/spring-postgres/backend/src/main/java/com/company/project/controllers/HomeController.java

@@ -0,0 +1,16 @@
+package com.company.project.controllers;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+@Controller
+public class HomeController {
+
+    @GetMapping("/")
+    public String showHome(String name, Model model) {
+        return "home";
+    }
+
+}

+ 1 - 0
samples/spring-postgres/backend/src/main/resources/application.properties

@@ -0,0 +1 @@
+

+ 9 - 0
samples/spring-postgres/backend/src/main/resources/templates/home.ftl

@@ -0,0 +1,9 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+  <title>Getting Started: Serving Web Content</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+</head>
+<body>
+	<p>Hello from Docker!</p>
+</body>

+ 1 - 0
samples/spring-postgres/db/password.txt

@@ -0,0 +1 @@
+db-wrz2z

+ 21 - 0
samples/spring-postgres/docker-compose.yaml

@@ -0,0 +1,21 @@
+version: "3.7"
+services:
+  backend:
+    build: backend
+    ports:
+    - 80:8080
+  db:
+    environment:
+      POSTGRES_DB: example
+      POSTGRES_PASSWORD_FILE: /run/secrets/db-password
+    image: postgres
+    restart: always
+    secrets:
+    - db-password
+    volumes:
+    - db-data:/var/lib/postgresql/data
+volumes:
+  db-data: {}
+secrets:
+  db-password:
+    file: db/password.txt