2
0
mirror of https://github.com/VinylDNS/vinyldns synced 2025-08-22 10:10:12 +00:00

have portal wait for mysql (#527)

* have portal docker image wait for mysql before starting up
This commit is contained in:
Nima Eskandary 2019-03-18 12:00:41 -04:00 committed by GitHub
parent 130bfa2b15
commit 1a2d12a7e9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 47 additions and 4 deletions

View File

@ -157,6 +157,16 @@ lazy val portalDockerSettings = Seq(
// this is the default version, can be overridden
bashScriptExtraDefines += s"""addJava "-Dvinyldns.base-version=${(version in ThisBuild).value}"""",
// wait for mysql
bashScriptExtraDefines += "(cd /opt/docker/ && ./wait-for-dependencies.sh && cd -)",
dockerCommands ++= Seq(
Cmd("USER", "root"), // switch to root so we can install netcat
ExecCmd("RUN", "apt-get", "update"),
ExecCmd("RUN", "apt-get", "install", "-y", "netcat-openbsd"),
Cmd("USER", "daemon") // switch back to the daemon user
),
credentials in Docker := Seq(Credentials(Path.userHome / ".ivy2" / ".dockerCredentials"))
)
@ -471,7 +481,6 @@ lazy val sonatypePublishStage = Seq[ReleaseStep](
lazy val finalReleaseStage = Seq[ReleaseStep] (
releaseStepCommand("project root"), // use version.sbt file from root
commitReleaseVersion,
tagRelease,
setNextVersion,
commitNextVersion
)

View File

@ -11,6 +11,7 @@ PORTAL_PORT=9001
PLAY_HTTP_SECRET_KEY=change-this-for-prod
VINYLDNS_BACKEND_URL=http://vinyldns-api:9000
DYNAMODB_ENDPOINT=http://vinyldns-dynamodb:8000
MYSQL_ENDPOINT=vinyldns-mysql:3306
USER_TABLE_NAME=users
USER_CHANGE_TABLE_NAME=userChange
TEST_LOGIN=true

View File

@ -53,9 +53,10 @@ portal.vinyldns.backend.url = ${?VINYLDNS_BACKEND_URL}
portal.test_login = true
portal.test_login = ${?TEST_LOGIN}
mysql {
class-name = "vinyldns.mysql.repository.MySqlDataStoreProvider"
endpoint = "localhost:19002"
endpoint = ${?MYSQL_ENDPOINT}
settings {
# JDBC Settings, these are all values in scalikejdbc-config, not our own
@ -63,8 +64,8 @@ mysql {
# assumes a docker or mysql instance running locally
name = "vinyldns"
driver = "org.mariadb.jdbc.Driver"
migration-url = "jdbc:mariadb://localhost:19002/?user=root&password=pass"
url = "jdbc:mariadb://localhost:19002/vinyldns?user=root&password=pass"
migration-url = "jdbc:mariadb://"${mysql.endpoint}"/?user=root&password=pass"
url = "jdbc:mariadb://"${mysql.endpoint}"/vinyldns?user=root&password=pass"
user = "root"
password = "pass"
}

32
modules/portal/dist/wait-for-dependencies.sh vendored Executable file
View File

@ -0,0 +1,32 @@
#!/usr/bin/env bash
# allow skipping with env var
if [ "$SKIP_MYSQL_WAIT" -eq "1" ]; then
exit 0
fi
# the mysql address, default to a local docker setup
MYSQL_ADDRESS=${MYSQL_ADDRESS:-vinyldns-mysql}
MYSQL_PORT=${MYSQL_PORT:-3306}
echo "Waiting for MYSQL to be ready on ${MYSQL_ADDRESS}:${MYSQL_PORT}"
DATA=""
RETRY=30
while [ "$RETRY" -gt 0 ]
do
DATA=$(nc -vzw1 "$MYSQL_ADDRESS" "$MYSQL_PORT")
if [ $? -eq 0 ]
then
break
else
echo "Retrying Again" >&2
let RETRY-=1
sleep .5
if [ "$RETRY" -eq 0 ]
then
echo "Exceeded retries waiting for MYSQL to be ready on ${MYSQL_ADDRESS}:${MYSQL_PORT}, failing"
return 1
fi
fi
done