- 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