Недавно у моего хорошего друга была постоянная проблема со сборкой приложения ADF v.12.2.1.2 с общедоступным репозиторием Oracle Maven. Он попросил меня проверить, сработало ли это для меня. Ну … это не так. Итак, возникла проблема с хранилищем. Чтобы сделать эксперимент чистым и избежать какого-либо воздействия на мою рабочую среду, я решил запустить тест в док-контейнере.
И хотя я не мог помочь своему другу (это просто не сработало, создавая какое-то исключение зависимости), в результате этой проверки я получил многократно используемый образ докера, который служит предварительно сконфигурированной машиной сборки для приложений ADF (для версии 12.2. 1.3 Репозиторий Oracle Maven работал нормально в тот момент).
Вот что я сделал:
1. Потяните и запустите образ Ubuntu Docker
|
1
|
$: docker run -it --name adfbuilder ubuntu |
2. Установите Java в контейнере adfbuilder
|
1
2
3
4
|
apt-get install software-properties-common python-software-propertiesadd-apt-repository ppa:webupd8team/javaapt-get updateapt-get install oracle-java8-installer |
3. Установите Maven в контейнере adfbuilder.
Просто скачайте maven- файлы, распакуйте их в какую-нибудь папку и скопируйте в контейнер:
|
1
|
docker cp ~/Downloads/apache-maven-3.5.2 adfbuilder:/opt/apache-maven-3.5.2 |
Обновить переменную среды PATH в контейнере
|
1
|
export PATH=$PATH:/opt/apache-maven-3.5.2/bin |
Сделав это, mvn должен быть доступен. Запустите его в контейнере, и он создаст скрытую папку .m2 в доме пользователя.
4. Настройте Maven в контейнере adfbuilder для работы с репозиторием Oracle Maven.
Просто положите в скрытую папку .m2
|
1
|
docker cp settings.xml adfbuilder:/root/.m2/settings.xml |
Файл settings.xml со следующим содержимым:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"> <servers> <server> <id>maven.oracle.com</id> <username>eugene.fedorenko@flexagon.com</username> <password><MY_PASSWORD></password> <configuration> <basicAuthScope> <host>ANY</host> <port>ANY</port> <realm>OAM 11g</realm> </basicAuthScope> <httpConfiguration> <all> <params> <property> <name>http.protocol.allow-circular-redirects</name> <value>%b,true</value> </property> </params> </all> </httpConfiguration> </configuration> </server> </servers> <profiles> <profile> <id>main</id> <activation> <activeByDefault>true</activeByDefault> </activation> <repositories> <repository> <id>maven.oracle.com</id> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> <layout>default</layout> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>maven.oracle.com</id> </pluginRepository> </pluginRepositories> </profile> </profiles></settings> |
По сути, этого достаточно для компиляции настроенного Maven приложения ADF в контейнере. Нам нужно убедиться, что есть доступ к исходному коду нашего приложения из контейнера. Это может быть сделано либо путем сопоставления исходной папки, видимой из контейнера, либо путем копирования ее в контейнер.
докер cp / mywork / MySampleApp adfbuilder: / opt / MySampleApp
Сделав это, мы можем запустить следующую команду, чтобы скомпилировать приложение:
docker exec adfbuilder mvn -f /opt/MySampleApp/pom.xml compile
5. Скопируйте двоичные файлы JDeveloper в контейнер
Поскольку мы хотим выйти за рамки этого пункта и иметь возможность не только компилировать, но и создавать развертываемые артефакты (уши, банки и т. Д.), Нам потребуется поместить двоичные файлы JDeveloper в контейнер (в основном, для maven потребуется ojdeploy). Я только что скопировал папку Oracle_Home с моего Mac в контейнер:
|
1
|
docker cp /My_Oracle_Home adfbuilder:/opt/Oracle_Home |
Итак, теперь я могу построить колос для своего приложения в контейнере:
|
1
|
docker exec adfbuilder mvn -f /opt/MySampleApp/pom.xml package -DoracleHome=/opt/Oracle_Home |
При первом запуске может потребоваться указать путь к вашему JDK.
|
1
2
3
|
[INFO] Type the full pathname of a JDK installation (or Ctrl-C to quit), the path will be stored in /root/.jdeveloper/12.2.1.3.0/product.conf/usr/lib/jvm/java-8-oracle |
6. Зафиксируйте изменения в контейнере.
Последнее, что нам нужно сделать, это зафиксировать изменения в контейнере:
|
1
|
docker commit adfbuilder efedorenko/adfbuilder |
Это создаст новый образ Ubuntu, содержащий все изменения, которые мы применили. Мы можем легко запустить этот образ в любой части нашей инфраструктуры и использовать его в качестве машины для приложений ADF. Прелесть этого в том, что мы можем запускать его в облаке, таком как Docker Cloud (при поддержке AWS, Microsoft Azure, Digital Ocean и т. Д.) Или Oracle Container Cloud Services или по вашему усмотрению. При таком подходе серверы в облаке создают ваше приложение для вас, что в целом является достаточно трудоемкой работой
Это все!
| Опубликовано на Java Code Geeks с разрешения Евгения Федоренко, партнера нашей программы JCG . См. Оригинальную статью здесь: Создание приложений Oracle ADF с помощью Docker.
Мнения, высказанные участниками Java Code Geeks, являются их собственными. |