Skip to content

Instantly share code, notes, and snippets.

@FibreFoX
Last active October 16, 2020 21:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save FibreFoX/dd945394fea423dbc2244b49127492e0 to your computer and use it in GitHub Desktop.
Save FibreFoX/dd945394fea423dbc2244b49127492e0 to your computer and use it in GitHub Desktop.
SonarQube 8.5.0 running on Raspberry Pi 4 (32bit Raspbian)
version: "3.3"
services:
sonarqube:
build: ./
restart: unless-stopped
ports:
- '9000:9000'
depends_on:
- database
environment:
SONAR_JDBC_URL: jdbc:postgresql://database:5432/sonar
SONAR_JDBC_USERNAME: sonar
SONAR_JDBC_PASSWORD: sonar
volumes:
- './data:/opt/sonarqube/data'
- './logs:/opt/sonarqube/logs'
database:
image: postgres:12
environment:
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar
volumes:
- './postgresql:/var/lib/postgresql'
- './postgresql_data:/var/lib/postgresql/data'
FROM openjdk:11-jre-slim-stretch
# Versions
ARG SONAR_VERSION=8.5.0.37579
ARG WRAPPER_VERSION=3.5.43
# Add needed software and create sonarqube user
RUN ["/bin/bash", "-c", "set -o pipefail && \
apt-get update && \
apt-get -y install openjdk-11-jre-headless unzip wget procps && \
rm -rf /var/lib/apt/lists/*"]
WORKDIR /opt
RUN ["/bin/bash", "-c", "set -o pipefail && \
wget -O sonarqube.zip https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-$SONAR_VERSION.zip && \
unzip sonarqube.zip && \
mv sonarqube-$SONAR_VERSION sonarqube"]
RUN ["/bin/bash", "-c", "set -o pipefail && \
wget --no-check-certificate -O - https://download.tanukisoftware.com/wrapper/$WRAPPER_VERSION/wrapper-linux-armhf-32-$WRAPPER_VERSION.tar.gz | tar xzf - && \
cp -r sonarqube/bin/linux-x86-64 sonarqube/bin/linux-armhf-32 && \
cp wrapper-linux-armhf-32-$WRAPPER_VERSION/bin/wrapper sonarqube/bin/linux-armhf-32 && \
cp wrapper-linux-armhf-32-$WRAPPER_VERSION/lib/libwrapper.so sonarqube/bin/linux-armhf-32/lib && \
rm -f sonarqube/lib/jsw/wrapper-*.jar && \
cp wrapper-linux-armhf-32-$WRAPPER_VERSION/lib/wrapper.jar sonarqube/lib/jsw/wrapper-$WRAPPER_VERSION.jar"]
RUN ["/bin/bash", "-c", "set -o pipefail && \
rm -rf wrapper-linux-armhf-32-$WRAPPER_VERSION \
sonarqube.zip \
sonarqube/bin/win* \
sonarqube/bin/mac* \
sonarqube/bin/linux-x86*"]
RUN ["/bin/bash", "-c", "set -o pipefail && \
groupadd --gid 500 sonarqube && \
useradd --uid 500 -md /opt/sonarqube -s /bin/bash -g sonarqube sonarqube && \
chown -R sonarqube:sonarqube sonarqube"]
# make it running on 32bit raspi
RUN rm -rf /opt/sonarqube/elasticsearch/lib/jna-4.5.1.jar
RUN wget -O /opt/sonarqube/elasticsearch/lib/jna-5.6.0.jar https://repo1.maven.org/maven2/net/java/dev/jna/jna/5.6.0/jna-5.6.0.jar
# https://stackoverflow.com/questions/44052358/can-i-disable-the-bootstrap-checks-in-elasticsearch-5-4
RUN echo "discovery.type: single-node" | tee -a /opt/sonarqube/elasticsearch/config/elasticsearch.yml
# do NOT force checks
RUN echo "-Des.enforce.bootstrap.checks=false" | tee -a /opt/sonarqube/elasticsearch/config/jvm.options
# disable telemetry
RUN echo "sonar.telemetry.enable=false" | tee -a /opt/sonarqube/conf/sonar.properties
# disable system call filter on wrapper-level
RUN echo "sonar.search.javaAdditionalOpts=-Dbootstrap.system_call_filter=false -Dbootstrap.memory_lock=false" | tee -a /opt/sonarqube/conf/sonar.properties
# Get software and prepare
USER sonarqube
WORKDIR /opt/sonarqube
# Port
EXPOSE 9000
# Check health with status
HEALTHCHECK --interval=5m --timeout=5s \
CMD ["bin/linux-armhf-32/sonar.sh", "status", "|", "grep", "-q", "SonarQube is running"]
# Command sonar.sh console / start
ENTRYPOINT ["bin/linux-armhf-32/sonar.sh"]
CMD ["console"]
@FibreFoX
Copy link
Author

FibreFoX commented Oct 16, 2020

Place both files in the same folder and execute this:

# required for elasticsearch
sudo sysctl -w vm.max_map_count=262144
# create folders
mkdir ./data ./logs
# own these in order to have them writable
sudo chown 500:500 -R ./data ./logs
# start via docker-compose
docker-compose up -d

Works on my personal Raspberry Pi 4 with 8GB RAM including a lot of other tools, so plenty room for more.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment