You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.9 KiB
61 lines
1.9 KiB
#!/bin/bash
|
|
|
|
## Init is run on host
|
|
## For now it is run every time the script is launched, but
|
|
## it should be launched only once after build.
|
|
|
|
## Accessible variables are:
|
|
## - SERVICE_NAME Name of current service
|
|
## - DOCKER_BASE_IMAGE Base image from which this service might be built if any
|
|
## - SERVICE_DATASTORE Location on host of the DATASTORE of this service
|
|
## - SERVICE_CONFIGSTORE Location on host of the CONFIGSTORE of this service
|
|
|
|
|
|
. lib/common
|
|
|
|
set -e
|
|
|
|
if [ "${HOST_DATASTORE+x}" ]; then
|
|
export HOST_DB_PASSFILE="$HOST_DATASTORE/${SERVICE_NAME}$DB_DATADIR/my.cnf"
|
|
else
|
|
export HOST_DB_PASSFILE="$CLIENT_DB_PASSFILE"
|
|
fi
|
|
|
|
|
|
if ! [ -d "$HOST_DATASTORE/${SERVICE_NAME}$DB_DATADIR" ]; then
|
|
|
|
MYSQL_ROOT_PASSWORD="$(gen_password)"
|
|
|
|
debug docker run -e "MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD" \
|
|
--rm \
|
|
-v "$DATA_DIR:$DB_DATADIR" \
|
|
--entrypoint /bin/bash "$DOCKER_BASE_IMAGE"
|
|
docker run -e "MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD" \
|
|
--rm \
|
|
-v "$DATA_DIR:$DB_DATADIR" \
|
|
--entrypoint /bin/bash "$DOCKER_BASE_IMAGE" -c '
|
|
mysqld() {
|
|
echo "diverted mysqld call..." >&2;
|
|
echo "$*" | grep -E "(--help|--skip-networking)" >/dev/null 2>&1 || return;
|
|
echo " .. Allowing call." >&2;
|
|
/usr/sbin/mysqld "$@";
|
|
}
|
|
export -f mysqld;
|
|
/docker-entrypoint.sh mysqld' || true
|
|
## docker errorlevel is still 0 even if it failed.
|
|
## AND we must ignore mysqld error !
|
|
[ "$(find "$DATA_DIR" \
|
|
-maxdepth 0 -type d -empty 2>/dev/null)" ] && {
|
|
err "Docker run probably failed to do it's job."
|
|
exit 1
|
|
}
|
|
|
|
## XXXvlab: this won't help support multiple project running on the
|
|
## same host
|
|
cat <<EOF > "$HOST_DB_PASSFILE"
|
|
[client]
|
|
password=$MYSQL_ROOT_PASSWORD
|
|
EOF
|
|
chmod 600 "$HOST_DB_PASSFILE"
|
|
info "New root password for mysql. "
|
|
fi
|