Spring Boot - сборка проекта maven (JAR-файл) внутри контейнера докера - PullRequest
0 голосов
/ 12 марта 2019

У меня есть проект начальной загрузки, на котором запущено приложение VueJS со следующей структурой папок:

root
+-- client
|   +-- [vue app]
|   +-- pom.xml
+-- server
|   +-- [spring boot app]
|   +-- pom.xml
+-- pom.xml

С client я запускаю следующие команды через pom.xml при сборке приложения. Сценарий устанавливает npm и запускает npm run build, чтобы создать папку dist/ для копирования в следующем фрагменте кода.

<plugin>
    <groupId>com.github.eirslett</groupId>
    <artifactId>frontend-maven-plugin</artifactId>
    <version>${frontend-maven-plugin.version}</version>
    <executions>
        <!-- Install our node and npm version to run npm/node scripts-->
        <execution>
            <id>install node and npm</id>
            <goals>
                <goal>install-node-and-npm</goal>
            </goals>
            <configuration>
                <nodeVersion>v11.5.0</nodeVersion>
            </configuration>
        </execution>
        <!-- Install all project dependencies -->
        <execution>
            <id>npm install</id>
            <goals>
                <goal>npm</goal>
            </goals>
            <!-- optional: default phase is "generate-resources" -->
            <phase>generate-resources</phase>
            <!-- Optional configuration which provides for running any npm command -->
            <configuration>
                <arguments>install</arguments>
            </configuration>
        </execution>
        <!-- Build and minify static files -->
        <execution>
            <id>npm run build</id>
            <goals>
                <goal>npm</goal>
            </goals>
            <configuration>
                <arguments>run build</arguments>
            </configuration>
        </execution>
    </executions>
</plugin>

В файле pom.xml в каталоге server у меня есть следующий конфиг, чтобы скопировать ресурсы из client/dist/ в статические ресурсы server classpath:

<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
    <execution>
        <!-- Copy Vue files to src-folder in server -->
        <id>copy Vue.js frontend content</id>
        <phase>generate-resources</phase>
        <goals>
            <goal>copy-resources</goal>
        </goals>
        <configuration>
            <outputDirectory>src/main/resources/public</outputDirectory>
            <overwrite>true</overwrite>
            <resources>
                <resource>
                    <directory>${project.parent.basedir}/client/dist</directory>
                    <includes>
                        <!-- Make sure assets are added to static/ folder in vue.config.js-->
                        <include>static/</include>
                        <include>index.html</include>
                        <include>favicon/</include>>
                    </includes>
                </resource>
            </resources>
        </configuration>
    </execution>
</executions>
</plugin>

Конечная цель - создать приложение с помощью конвейера jenkins в док-контейнер.

Однако моя проблема в том, что из-за производственных настроек я не могу загрузить или установить узел / npm через maven (все внешние пакеты заблокированы по соображениям безопасности).

Поэтому мне нужен способ для создания приложения vue и копирования файлов в путь к классам при создании файла .jar без фактического выполнения этого через maven.

Идея состояла в том, чтобы использовать образ докера с установленным node и выполнить сборку через образ докера. Тем не менее, я понятия не имею о реальном подходе этого. Если у кого-то есть идея, это будет высоко оценено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...