To już kolejny mój post, w którym przedstawiam w jaki prosty sposób można zestawić środowisko z wykorzystaniem dobrodziejsttw płynących z Docker-Compose.
Tym razem skupimy się na przykładzie, gdzie skonfigurujemy środowisko składające się z:
- Jenkins
- SonarQube + PostgreSQL
- Nexus
Skrypt docker-compose.yml
version: "3" services: jenkins: image: jenkinsci/blueocean container_name: jenkins environment: - DOCKER_HOST=tcp://localhost:2375 - JENKINS_UC=http://updates.jenkins.io - JENKINS_UC_EXPERIMENTAL=http://updates.jenkins.io/experimental - JENKINS_INCREMENTALS_REPO_MIRROR=http://repo.jenkins-ci.org/incrementals user: root ports: - "8080:8080" - "8443:8443" - "50000:50000" expose: - "8080" volumes: - jenkins-data:/var/jenkins_home - jenkins-home:/home nexus: image: sonatype/nexus3 container_name: nexus volumes: - "nexus-data:/nexus-data" ports: - "8081:8081" expose: - "8081" sonarqube: image: sonarqube container_name: sonarqube ports: - "9000:9000" environment: - sonar.jdbc.url=jdbc:postgresql://db:5432/sonar volumes: - sonarqube_conf:/opt/sonarqube/conf - sonarqube_data:/opt/sonarqube/data - sonarqube_extensions:/opt/sonarqube/extensions db: image: postgres environment: - POSTGRES_USER=sonar - POSTGRES_PASSWORD=sonar volumes: - postgresql:/var/lib/postgresql # This needs explicit mapping due to https://github.com/docker-library/postgres/blob/4e48e3228a30763913ece952c611e5e9b95c8759/Dockerfile.template#L52 - postgresql_data:/var/lib/postgresql/data volumes: nexus-data: {} jenkins-data: {} jenkins-home: {} sonarqube_conf: {} sonarqube_data: {} sonarqube_extensions: {} postgresql: {} postgresql_data: {}
Sprawdź status kontenerów
Zanim zaczniemy dalszą cześć konfiguracji, sprawdź czy wszystkie kontenery są w statusie “UP”.
docker-compose ps Name Command State Ports -------------------------------------------------------------------------------------------------------------------------------------------- jenkins /sbin/tini -- /usr/local/b ... Up 0.0.0.0:50000->50000/tcp, 0.0.0.0:8080->8080/tcp, 0.0.0.0:8443->8443/tcp jenkins_nexus_sonar_db_1 docker-entrypoint.sh postgres Up 5432/tcp nexus sh -c ${SONATYPE_DIR}/star ... Up 0.0.0.0:8081->8081/tcp sonarqube ./bin/run.sh Up 0.0.0.0:9000->9000/tcp
Jenkins – pierwsze uruchomienie
Interfejs użytkownika Jenkins dostępny jest pod adresem URL: http://localhost:8080
Przy pierwszym uruchomieniu zostaniemy poproszeni o podanie hasła administratora, które jest zapisane w pliku: /var/jenkins_home/secrets/initialAdminPassword, który znajduję sie na systemie plików kontenera z Jenkinsem. Aby otworzyć zawartość tego pliku musimy “wejść” do tego kontenera przy użyciu SSH. W tym celu z terminala uruchamiamy komende:
# docker exec -it <nazwa_kontenera> /bin/bash docker exec -it jenkins /bin/bash
Gdy już jesteśmy wewnątrz kontenera uruchamiamy komende poniżej. Ciąg znaków to nasze hasło administratora.
cat /var/jenkins_home/secrets/initialAdminPassword 1367d1e351194e839abb21682498e63d
Instalacja wtyczek (plugins)
Następnie zainstaluj sugerowane wtyczki. Jest to zbiór podstawowych rozszerzeń, które można traktować jako pakiet startowy.
Tworzenie konta administratora
Kolejnym krokiem jest utworzenie konta administratora.
Po utworzeniu konta admin możemy już w pełni korzystać z Jenkinsa.
Nexus – pierwsze uruchomienie
Interfejs użytkownika Nexus dostępny jest pod adresem URL: http://localhost:8081
Przy próbie pierwszego logowania otrzymamy informację, że hasło do usera admin zostało wygenerowane i znajduję się pod ścieżką: /nexus-data/admin.password. Sprawdźmy jakie to hasło!
Korzystając z poniższej komendy wejdziemy na kontener Nexusa.
docker exec -it nexus /bin/bash cat /nexus-data/admin.password 05feffa3-f8e3-49ed-b765-002d6b90d2a5
Wklejamy powyższe hasło do formatki logowania. Następnie zostaniemy poproszeni o ustawienie swojego hasła do czego zachęcam.
SonarQube – pierwsze uruchomienie
Interfejs użytkownika SonarQube dostępny jest pod adresem URL: http://localhost:9000
Klikamy w prawym górnym rogu przycisk “Log-in”. Domyślny użytkownik administratora to: admin i hasło również: admin.
Podsumowanie
Jak widzisz tworzenie środowiska przy pomocy docker-compose jest naprawdę proste. W kilka minut możemy stowrzyć i zacząć używać narzędzi.
Reasumując, poniżej przedstawiam jeszcze listę URLs kolejno do: