Перейти к содержимому
Главная страница » Установка Sonatype Nexus OSS v3 в контейнере Docker

Установка Sonatype Nexus OSS v3 в контейнере Docker

Sonatype Nexus 3 — это менеджер репозиториев с открытым исходным кодом, используемый для хранения программных артефактов и управления ими. Это обеспечивает центральное расположение для хранения программных компонентов и их зависимостей и управления ими, упрощая управление программными пакетами и их распространение в организации.

Предварительные требования

  • Требуется минимум 2-ядерный процессор и 4 ГБ оперативной памяти.
  • Базовые знания о Docker.
  • Базовые знания команд Linux.
  • Запуск Docker.

В этом посте мы покажем вам, как развернуть nexus docker container.

Извлеките образ Nexus Docker

Нам нужно извлечь официальный образ docker из Docker Hub с помощью данной команды.

sudo docker pull sonatype/nexus3

Проверьте образ Nexus Docker

Давайте проверим образ nexus docker, выполнив данную команду.

sudo docker images

Развертывание контейнера Nexus Docker

Мы умеем развертывать образы nexus docker с помощью следующих команд.

Создайте каталог для хранения данных nexus вне контейнера docker.

sudo mkdir nexus-data

Как развернуть контейнер nexus docker.

docker run -d -p 8081:8081 --name nexus -v nexus-data:/nexus-data sonatype/nexus3

Для проверки контейнера nexus.

sudo docker ps 

Доступ к порталу Nexus

Как только контейнер nexus будет развернут, мы сможем получить доступ к порталу nexus с localhost: 8081 или IP экземпляра Docker http://IP-Address:8081

Примечание: Если ваша машина docker работает внутри брандмауэра, то вам необходимо открыть порт 8081, чтобы получить доступ к серверу nexus repository.

Настройте пароль пользователя вашего администратора, Ваш пароль пользователя администратора находится в /nexus-data/admin.password на сервере.

sudo docker exec -it <Container_id> cat /nexus-data/admin.password

Вам нужно заменить идентификатор контейнера на приведенную выше команду, чтобы получить пароль nexus по умолчанию.

Вы должны получить возможность обновить свой собственный пароль для администратора.

после этого вы должны получить параметр «Настроить анонимный доступ», вы должны выбрать параметр «Анонимный доступ», В моем случае я выбираю «Disable anonymous access» (Отключить анонимный доступ).

И тогда вы должны получить сообщение finish при просмотре веб-страниц, подобное этому.

Как попасть на главную панель управления nexus следующим образом.

Создание репозитория Maven

Мы собираемся рассказать о проекте maven и загрузке артефактов maven в nexus repository.

Следуйте приведенным шагам, чтобы создать репозиторий maven nexus.

Нажмите на кнопку репозитории.

Нажмите на кнопку Создать репозиторий.

Найдите и щелкните maven2 (размещенный) репозиторий.

Введите имя репозитория maven project nexus, это имя должно быть уникальным, В моем случае я использую example и

вы также можете оставить другие настройки по умолчанию и нажать на кнопку «Создать репозиторий» в конце веб-страницы.

Проверьте созданный репозиторий nexus, В разделе репозитория вы должны увидеть недавно созданный репозиторий.

Мы успешно развернули nexus docker container и настроили bind mount в ubuntu 22.04 LTS, если у вас все еще есть вопросы, пожалуйста, разместите их в разделе комментариев ниже.

Источник

2 комментария для “Установка Sonatype Nexus OSS v3 в контейнере Docker”

  1. Здравствуйте, я хочу попросить вас оценить мой compose с nexus.
    GNU nano 5.4 docker-compose.yml se
    rvices:db
    : i
    mage: postgres:15 c
    ontainer_name: nexus-db e
    nvironment:
    POSTGRES_DB: nexus
    POSTGRES_USER: nexus
    POSTGRES_PASSWORD: nexuspassword v
    olumes:
    — db-data:/var/lib/postgresql/data n
    etworks:
    — nexus-network h
    ealthcheck:
    test: [«CMD-SHELL», «pg_isready -U nexus»]
    interval: 10s
    timeout: 5s
    retries: 5ne

    xus: i
    mage: sonatype/nexus3 c
    ontainer_name: nexus-service d
    epends_on:
    db:
    condition: service_healthy e
    nvironment:
    NEXUS_DATABASE_TYPE: postgresql
    NEXUS_DATABASE_HOST: db
    NEXUS_DATABASE_PORT: 5432
    NEXUS_DATABASE_NAME: nexus
    NEXUS_DATABASE_USER: nexus
    NEXUS_DATABASE_PASSWORD: nexuspassword v
    olumes:
    — nexus-data:/nexus-data
    networks:
    — nexus-network
    ports:
    — «8081:8081»
    volumes:
    nexus-data:
    db-data:

    1. Здравствуйте! Спасибо, что поделились конфигурацией.
      В целом подход верный: отдельная БД PostgreSQL, healthcheck и depends_on с condition: service_healthy — это как раз то, что нужно, чтобы Nexus не стартовал до готовности БД. Отдельные volumes для данных тоже правильно.
      При копировании из nano в комментарий сбилась разметка YAML (склеились строки и отступы). В приложении выше — исправленный вариант. В нём добавлены:
      секция networks с явным объявлением nexus-network;
      restart: unless-stopped для обоих сервисов.
      Для продакшена рекомендую вынести пароль БД в .env и не хранить его в открытом виде в compose. Если понадобится ограничить память JVM у Nexus, можно задать переменную окружения INSTALL4J_ADD_VM_PARAMS с параметрами вроде -Xms1g -Xmx2g.
      Если после правок что-то не поднимется — пришлите фрагмент логов контейнера Nexus или БД, разберём точечно.
      Плюсы:
      PostgreSQL 15 и отдельный контейнер БД.
      depends_on с condition: service_healthy — Nexus стартует после готовности БД.
      Healthcheck у db через pg_isready.
      Отдельные volumes для данных БД и Nexus.
      Общая сеть nexus-network для сервисов.
      Что стоит улучшить:
      Сеть — nexus-network используется в сервисах, но в конце файла нет секции networks:, где она объявлена. Лучше явно добавить.
      Пароль — nexaxpassword в открытом виде; для продакшена лучше .env или Docker secrets.
      Рестарт — можно добавить restart: unless-stopped для обоих сервисов.
      Nexus — при желании можно задать JVM-память через INSTALL4J_ADD_VM_PARAMS (например, -Xms1g -Xmx2g), если не описали в статье.
      Исправленный и «причёсанный» пример compose для ответа:

      services:
      db:
      image: postgres:15
      container_name: nexus-db
      environment:
      POSTGRES_DB: nexus
      POSTGRES_USER: nexus
      POSTGRES_PASSWORD: nexuspassword
      volumes:
      - db-data:/var/lib/postgresql/data
      networks:
      - nexus-network
      healthcheck:
      test: ["CMD-SHELL", "pg_isready -U nexus"]
      interval: 10s
      timeout: 5s
      retries: 5
      restart: unless-stopped

      nexus:
      image: sonatype/nexus3
      container_name: nexus-service
      depends_on:
      db:
      condition: service_healthy
      environment:
      NEXUS_DATABASE_TYPE: postgresql
      NEXUS_DATABASE_HOST: db
      NEXUS_DATABASE_PORT: "5432"
      NEXUS_DATABASE_NAME: nexus
      NEXUS_DATABASE_USER: nexus
      NEXUS_DATABASE_PASSWORD: nexuspassword
      volumes:
      - nexus-data:/nexus-data
      networks:
      - nexus-network
      ports:
      - "8081:8081"
      restart: unless-stopped

      volumes:
      nexus-data:
      db-data:

      networks:
      nexus-network:
      driver: bridge

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *