Дженкинс – Как Я Могу Отправить Несколько Контейнеров, Созданных С Помощью Docker-Compose, В Реестр

  • Автор темы Mikerl
  • Обновлено
  • 21, Oct 2024
  • #1

Я использую конвейер Jenkins и запускаю команду оболочки, чтобы вызвать связанные контейнеры для тестирования. После завершения тестирования я хочу отправить контейнеры в реестр (я бы предпочел AWS ERC, но на этом этапе я возьму любые рабочие примеры). Как правильно это сделать? Должно ли каждое изображение помещаться в отдельный репозиторий? Как я могу получить все контейнеры, созданные с помощью файла компоновки, вверх? Я пытался сделать это с помощью команды push docker-compose, но, похоже, не могу заставить ее работать правильно или найти достойные примеры.

Дженкинсфайл

 
 version: "2"
services:

db_setup:

networks:

- default

build: .

depends_on:

- db

container_name: db_setup

image: db_setup

command: python asteri_analytics_db.py

working_dir: /asteri_analytics_db/asteri_analytics_db

db:

networks:

- default

- outside

image: mongo:3.6.3

container_name: mongo_db

restart: always

environment:

MONGO_DATA_DIR: /data/db

MONGO_LOG_DIR: /dev/null

MONGO_INITDB_ROOT_USERNAME: ###edited####

MONGO_INITDB_ROOT_PASSWORD: ###edited####

ports:

- 27017:27017

networks:

outside:

external:

name: aa_backend_network
 

docker-compose

node('ec2-build-slave') { stage('Docker Build') { /* This builds the actual image; synonymous to * docker build on the command line */ sh("docker network create aa_backend_network") sh("docker-compose up -d --build") //docker.build("$IMAGE") } stage ('Docker Push'){ // /* This pushes the previously built image to the Amazon // * ECS Container Registry */ sh("eval \$(aws ecr get-login --region us-west-2 --no-include-email | sed 's|https://||')") // docker.withRegistry(ECR_URL, ECR_CRED) { // docker.image(IMAGE).push() // } sh("docker-compose build") sh("docker-compose push") } } catch (exc) { currentBuild.result = "FAILED" throw exc } finally { // Success or failure, always send notifications notifyBuild(currentBuild.result) sh("docker-compose down -v") sh("docker network prune -f") } } }

#docker #jenkins #jenkins-pipeline #docker-compose #amazon-ecs

Mikerl


Рег
16 Nov, 2005

Тем
73

Постов
190

Баллов
585
  • 25, Oct 2024
  • #2

Просто убедитесь, что все образы, которые вы создаете, имеют правильные имена с точки зрения префикса реестра и так далее. Если нет, вам необходимо переименовать их соответствующим образом.

В противном случае эта задача довольно проста. Чтобы отправить все изображения, которые вы создаете с помощью файла docker-compose, просто используйте docker-compose push .

Убедитесь, что у вас есть права на отправку данных в реестр (вы вошли в систему и т. д.).

 

Plushka_90


Рег
25 Jun, 2008

Тем
63

Постов
177

Баллов
542
Похожие темы Дата
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно