Dockerized Spring Boot не работает на Raspberry Hyperiot OS + Gitlab CI + Spring Boot - PullRequest
0 голосов
/ 13 ноября 2018

Я хочу настроить автоматическое развертывание с помощью Gitlab CI и Docker для моего проекта Spring Boot.Для этого я установил Hypriot OS на мою малину, чтобы запустить мой докер-контейнер.Сборка Maven и Docker выполняется без ошибок через Gitlab CI.Но если я запускаю docker на моем Raspberry, ничего не происходит.

gitlab-ci.yml

image: docker:latest

services:
    - docker:dind

variables:
    DOCKER_DRIVER: overlay
    SPRING_PROFILES_ACTIVE: gitlab-ci
    USER_GITLAB: ft
    APP_NAME: ft-backend
    REPO: backend

stages: 
    - build
    - docker

maven-build:
    image: maven:3-jdk-8
    stage: build
    script: "mvn package -B"
    artifacts:
        paths:  
            - target/*.jar

docker-build:
    stage: docker
    script:
        - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.com
        - docker build -t registry.gitlab.com/ft/$REPO . 
        - docker push registry.gitlab.com/ft/$REPO

application.properties

spring.profiles.active=local
server.port=8080
spring.application.name=backend

Dockerfile

FROM jsurf/rpi-java:latest
VOLUME /tmp
ADD target/ft-backend-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","app.jar"]
CMD [""]

Я использую следующие команды на моем Raspberry для запуска Docker.Но если я хочу получить доступ к своей Raspberry 192 ...: 8080, мой проект не появится.docker ps также ничего не отображает.

docker login registry.gitlab.com
docker pull registry.gitlab.com/ft/backend
docker run -d -p 8080:8080 registry.gitlab.com/ft/backend:latest

Обновление

Структура проекта

enter image description here

manifest.yml

applications:
- name: hello
  disk_quota: 512M
  instances: 1
  memory: 256M
  random-route: true
  timeout: 120
  path: ./target/ft-backend-0.0.1-SNAPSHOT.jar
  env:
    JBP_CONFIG_OPEN_JDK_JRE: '[memory_calculator: {stack_threads: 100, memory_sizes: {stack: 128k, native: 150m}}]'

MANIFEST.MF

Manifest-Version: 1.0
Start-Class: hello.Application

pom.xml

<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>de.tf</groupId>
    <artifactId>ft-backend</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.5.RELEASE</version>
    </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>
        <!-- Spring Boot -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <pluginManagement>
            <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <mainClass>hello.Application</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>3.0.0-M1</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

</project>

1 Ответ

0 голосов
/ 14 ноября 2018

Для создания образа Docker проекта Spring Boot maven я рекомендую использовать dockerfile-maven-plugin .

1. Настройка упаковки проекта как исполняемого файла jar

<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
  ...

2. Настройка построения образа Docker

  ...
    <plugin>
      <groupId>com.spotify</groupId>
      <artifactId>dockerfile-maven-plugin</artifactId>
      <version>${dockerfile-maven-plugin.version}</version>
      <executions>
        <execution>
          <id>default</id>
          <goals>
            <goal>build</goal>
            <goal>push</goal>
          </goals>
        </execution>
      </executions>
      <configuration>
        <repository>${docker.repository}/${project.artifactId}</repository>
        <tag>${project.version}</tag>
        <buildArgs>
          <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
        </buildArgs>
      </configuration>
    </plugin>

3. Создание файла Docker

4. Создание образа Docker

$ mvn clean package

Подробнее см. Пружинный ботинок с направляющей докера .

...