Недавно у моего хорошего друга была постоянная проблема со сборкой приложения 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-properties add-apt-repository ppa:webupd8team /java apt-get update apt-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 > < 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, являются их собственными. |