Я пытаюсь создать Docker установку Jahia CMS (Digital Experience Manager).
Я нуждаюсь :
- контейнер MySQL
- контейнер Jahia (встроенный Tomcat)
Хитрость в том, что во время сборки контейнера Jahia (установка продукта с использованием ожидания), мне нужно получить доступ к контейнеру MySQL (требуется проверка соединения).
Файл Docker для MySQL:
FROM mysql:5.6
Jahia Dockefile :
FROM centos:centos6
# Install dependencies
RUN yum -y update && yum -y install ...
# Download Digital Experience Manager 7.1.1
RUN wget -q https://www.jahia.com/downloads/jahia/digitalexperiencemanager7.1.1/DigitalExperienceManager-EnterpriseDistribution-7.1.1.0-r53717.3663.jar -O /tmp/DigitalExperienceManager.jar
# Download MySQL connector (only needed for standalone db installation)
RUN wget -q http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.44/mysql-connector-java-5.1.44.jar -O /usr/lib/mysql-connector-java-5.1.44.jar
# Launch installation using Expect to automate user input
COPY jahia_conf.exp /tmp/configuration.exp
RUN expect /tmp/configuration.exp
# Start Jahia
/opt/DigitalExperienceManager-EnterpriseDistribution-7.1.1.0/tomcat/bin/catalina.sh jpda run
Сценарий ожидания (jahia_conf.exp)
#!/bin/sh
#!/usr/bin/expect
spawn java -jar /tmp/DigitalExperienceManager.jar -console
# Installation directory
expect "Select target path"
send "/opt/DigitalExperienceManager-EnterpriseDistribution-7.1.1.0\r"
# MySQL connector JAR file
expect "Specify the path to the downloaded driver JAR file"
send "/usr/lib/mysql-connector-java-5.1.44.jar\r"
# Database configuration
expect "Database URL (*)"
send "jdbc:mysql://mysql:3306/jahia?useUnicode=true&characterEncoding=UTF-8&useServerPrepStmts=false\r"
Конечно, я получаю сообщение об ошибке во время сборки образа, потому что он проверяет соединение сразу после ввода URL-адреса базы данных:
Произошла ошибка при установлении соединения с базой данных com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Ошибка канала связи
Последний пакет, успешно отправленный на сервер, был 0 миллисекунд назад. Драйвер не получил никаких пакетов от сервера.
На самом деле я просто собираю образ Jahia, поэтому контейнер mysql
еще недоступен (даже если он запущен).
Как поступить в такой ситуации (когда вам нужно получить доступ к другому контейнеру во время сборки)?
expect /tmp/configuration.exp
и последнюю команду для запуска Jahia в entrypoint.sh, который запускается при запуске контейнера? - person bluescores   schedule 16.02.2018