Статьи

Создание приложений Oracle ADF с помощью Docker

Недавно у моего хорошего друга была постоянная проблема со сборкой приложения 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
  <servers>
    <server>
      <id>maven.oracle.com</id>
      <username>[email protected]</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>
          <url>https://maven.oracle.com</url>
          <layout>default</layout>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>maven.oracle.com</id>
          <url>https://maven.oracle.com</url>
        </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, являются их собственными.