все
У меня есть битнами Дженкинс, выпущенный в ec2 экземпляре AWS. На той же машине я запускаю свой конвейер, в котором я использую docker для нескольких процессов, один из которых запускает базу данных, а tomcat для приложения .war. Дело в том, что я хочу иметь доступ к нему из субдомена или другого домена (приложение, которое я запускаю в этом контейнере Docker, чтобы иметь возможность наблюдать за изменениями).
Для этого я использую traefik и вижу все контейнеры, работающие в одной сети EC2. Я также могу перенаправить его на определенный URL. Чего я не знаю, так это как создать новый поддомен для этой работы. Traefic запустил его с помощью следующей команды (чтобы вы могли видеть, как я сопоставляю порты):
sudo docker run -d -p 9090:8080 -p 8888:80 --network public --name traefik -v $PWD/traefik.toml:/etc/traefik/traefik.toml -v /var/run/docker.sock:/var/run/docker.sock traefik
На следующем изображении я показываю трафик с IP-адресом, который я хочу выставить снаружи, и путем (в данном случае это домен с расширением, но я также пробовал поддомен):
Файл конфигурации traefic в pastebin имеет следующий вид: ссылка на файл конфигурации в pastebin
Из того, что я видел, приложение bitnami использует tomcat, поправьте меня, если нет. У меня есть домен во freenom, так как это тест, который я делаю.
Было бы целесообразно создать поддомен, а также расширение: http: /midominio.ga/test
Большое спасибо, любая помощь приветствуется.
Редактировать 1: я знаю, что могу открыть его, сопоставив порт контейнера со свободным портом EC2, где я запускаю jenkins, но я предпочел создать его в поддомене или в идеале в расширении исходного домена динамически.
Редактировать 2:
Я попытаюсь объяснить мой случай лучше. У меня есть экземпляр EC2 под управлением bitnami jenkins. Внутри моего конвейера у меня есть следующее:
stage ('Postgres: despliegue inicial de la base de datos') {
def dbImage = docker.build("catalogador/catalogador-tfg-db:${BRANCH_NAME}","--label jenkins ./database")
dbHostname = "${BRANCH_NAME}-${BUILD_NUMBER}-db"
db = dbImage.run("-p 5432:5432 --network public --name ${dbHostname}")
timeout(time: 3, unit: 'MINUTES') {
sh "until [ \$(docker logs ${dbHostname} --tail 50 2>&1 | grep 'init process complete' | wc -l) -gt 0 ]; do sleep 10; done"
}
}
stage ('Tomcat: despliegue de la aplicación') {
def webImage = docker.build("asd/asd-tfg-app:${BRANCH_NAME}","--label jenkins ./appserver")
def webJavaOpts = "-Dspring.datasource.url=jdbc:postgresql://${dbHostname}:5432/${dbName} " +
"-Dspring.datasource.username=${dbUser} " +
"-Dspring.datasource.password=${dbPassword} "
webHostname = "${BRANCH_NAME}-${BUILD_NUMBER}-app"
def proxyOpts = "-l 'traefik.frontend.rule=Host:${testingDomainName};PathPrefixStrip:/${webProxyPrefixPath}' " +
"-l 'traefik.port=9090'"
web = webImage.run("-p 9999:8080 -p 9898:80 --network public --link ${dbHostname} --name ${webHostname} -e JAVA_OPTS='${webJavaOpts}' ${proxyOpts}")
timeout(time: 3, unit: 'MINUTES') {
sh "until [ \$(docker logs ${webHostname} --tail 50 2>&1 | grep 'Server startup' | wc -l) -gt 0 ]; do sleep 10; done"
}
}
Что я хочу знать, так это как создать поддомен в этом экземпляре EC2 с помощью Bitnami Jenkins. Таким образом, вместо доступа к моему приложению через http: // mydomain: 9999, вы можете получить к нему доступ через URL субдомена http: //subdomain.mydomain.com или обычный домен с расширением http: // mydomain.com/extension ,
Я не знаю, как это сделать, потому что на изображении битнами Дженкинса есть tomcat, apache2 и т. Д. Я даже не знаю, какой из них он использует. Я думаю, кот, потому что именно там у него война Дженкинса. Даже создавать каждый раз, когда я запускаю свой конвейер, другой поддомен может быть отличным.
Еще раз спасибо.