I am attempting to move from docker sonarqube:7.9-community to sonarqube:8.1-developer-beta.
Because this is an update I want to continue to use the same Azure SQL database.
I am running these containers via an Azure App Service. When I attempt to run the sonarqube:8.1-developer-beta version I get the following error.
Container prod-ne-sonarqube-web_0_5a713973 for site prod-ne-sonarqube-web has exited, failing site start
2020-02-25 21:31:37.424 ERROR - Container web_0_5a713973 didn't respond to HTTP pings on port: 9000, failing site start. See container logs for debugging.
2020-02-25 21:31:37.466 INFO - Stoping site web because it failed during startup.
When inspecting the logs everything looks normal. The generated docker run command does map to port 9000
docker run -d -p 9829:9000 --name web_0_5a713973 -e WEBSITES_ENABLE_APP_SERVICE_STORAGE=true -e WEBSITE_SITE_NAME=web -e WEBSITE_AUTH_ENABLED=False -e PORT=9000 -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_HOSTNAME=web.azurewebsites.net -e HTTP_LOGGING_ENABLED=1 myprivateregistry/linux/nw-sonarqube:8.1-developer-edition
My image is compiled using the following DockerFile and entrypoint file
DockerFile
FROM sonarqube:8.1-developer-beta
COPY entrypoint.sh ./bin/
USER root
RUN chmod +x ./bin/entrypoint.sh
RUN mkdir -p /home/sonarqube/data
RUN chown -R sonarqube:sonarqube /home/sonarqube
USER sonarqube
ENTRYPOINT ["./bin/entrypoint.sh"]
Entrypoint
#!/usr/bin/env bash
echo Create a new sonarqube_home_new folder and backup your old folder
export SONARQUBE_HOME=/home/sonarqube
echo Preparing SonarQube container
echo Moving directory
mv -n /opt/sonarqube/conf /home/sonarqube
mv -n /opt/sonarqube/logs /home/sonarqube
mv -n /opt/sonarqube/extensions /home/sonarqube
echo Changing owners
chown -R sonarqube:sonarqube /home/sonarqube/data
chown -R sonarqube:sonarqube /home/sonarqube/conf
chown -R sonarqube:sonarqube /home/sonarqube/logs
chown -R sonarqube:sonarqube /home/sonarqube/extensions
echo Removing files
rm -rf /opt/sonarqube/conf
rm -rf /opt/sonarqube/logs
rm -rf /opt/sonarqube/extensions
echo Creating symlinks
ln -s /home/sonarqube/conf /opt/sonarqube/conf
ln -s /home/sonarqube/logs /opt/sonarqube/logs
ln -s /home/sonarqube/extensions /opt/sonarqube/extensions
#chown -R sonarqube:sonarqube $SONARQUBE_HOME
set -e
if [ "${1:0:1}" != '-' ]; then
exec "$@"
fi
# Parse Docker env vars to customize SonarQube
#
# e.g. Setting the env var sonar.jdbc.username=foo
#
# will cause SonarQube to be invoked with -Dsonar.jdbc.username=foo
declare -a sq_opts
while IFS='=' read -r envvar_key envvar_value
do
if [[ "$envvar_key" =~ sonar.* ]] || [[ "$envvar_key" =~ ldap.* ]]; then
sq_opts+=("-D${envvar_key}=${envvar_value}")
fi
done < <(env)
exec tail -F ./logs/es.log &
exec java -jar lib/sonar-application-$SONAR_VERSION.jar \
-Dsonar.log.console=true \
-Dsonar.jdbc.username="$APPSETTING_SONARQUBE_JDBC_USERNAME" \
-Dsonar.jdbc.password="$APPSETTING_SONARQUBE_JDBC_PASSWORD" \
-Dsonar.jdbc.url="$SQLAZURECONNSTR_SONARQUBE_JDBC_URL" \
-Dsonar.web.javaAdditionalOpts="$SONARQUBE_WEB_JVM_OPTS -Djava.security.egd=file:/dev/./urandom" \
-Dsonar.search.javaAdditionalOpts=-Dnode.store.allow_mmapfs=false \
"${sq_opts[@]}" \
"$@"