https://github.com/kamikototkach/imagecomposer
Программная сборка Docker-образов через Jib Core по YAML-конфигурациям.
https://github.com/kamikototkach/imagecomposer
ci-cd container deployment docker image-builder java jib
Last synced: 24 days ago
JSON representation
Программная сборка Docker-образов через Jib Core по YAML-конфигурациям.
- Host: GitHub
- URL: https://github.com/kamikototkach/imagecomposer
- Owner: KamikotoTkach
- License: agpl-3.0
- Created: 2025-09-01T16:36:32.000Z (about 1 month ago)
- Default Branch: master
- Last Pushed: 2025-09-14T19:01:11.000Z (30 days ago)
- Last Synced: 2025-09-14T19:30:39.258Z (30 days ago)
- Topics: ci-cd, container, deployment, docker, image-builder, java, jib
- Language: Java
- Homepage:
- Size: 46.9 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
# Image Composer
Программная сборка Docker-образов через Jib Core по YAML-конфигурациям. Работает без Docker daemon и Dockerfile.
## Что делает
Берёт базовый образ, накладывает файлы, настраивает окружение и публикует в:
- Docker Registry
- Локальный Docker daemon
- TAR-архив## Быстрый старт
### 1. Создать конфиги
**images.yml**
```yaml
images:
my-app:latest:
image: eclipse-temurin:17-jre
components: [app] # из components.yml
entrypoint: ["java", "-jar", "/app/app.jar"]
expose: ["8080/tcp"]
env:
env-key: env-value
deploy: local # из deploy.yml
```**components.yml**
```yaml
components:
app:
items:
- from: build/app.jar
to: /app/app.jar
order: 1
# если нет, то просто components: {}
```**deploy.yml**
```yaml
deploys:
# Локальная сборка
local: ! {}
# В реестр
registry: !
username: "${REG_USER}"
password: "${REG_PASS}"
# В TAR
tar: !
path: "./dist"
```**credentials.yml** (для приватных базовых образов)
```yaml
credentials:
"registry.example.com/":
username: "user"
password: "pass"
# если нет, то просто credentials: {}
```**last_build.yml** (для обновления образов)
```yaml
last_build: {}
```### 2. Запуск
Собрать все образы:
```bash
java -jar image-composer.jar -d working_directory build-all
```
Собрать обновлённые образы:
```bash
java -jar image-composer.jar -d working_directory build-updated
```
Собрать образ `someImage`:
```bash
java -jar image-composer.jar -d working_directory build someImage
```## Сценарии
### Локальная сборка
```yaml
# images.yml
images:
my-app:latest:
image: eclipse-temurin:17-jre
components: [app]
entrypoint: ["java", "-jar", "/app/app.jar"]
expose: ["8080/tcp"]
deploy: local
```### Сборка в реестр
```yaml
# images.yml
images:
some.registry.io/my-app:latest:
image: eclipse-temurin:17-jre
components: [app]
entrypoint: ["java", "-jar", "/app/app.jar"]
expose: ["8080/tcp"]
deploy: registry
```### Сборка в TAR
```yaml
# images.yml
images:
my-app:latest:
image: eclipse-temurin:17-jre
components: [app]
entrypoint: ["java", "-jar", "/app/app.jar"]
expose: ["8080/tcp"]
deploy: tar
```Загрузка: `docker load -i dist/my-app`
## Компоненты с зависимостями
```yaml
components:
base-config:
items:
- from: config/app.yml
to: /etc/app/config.yml
order: 1
app:
dependencies: [base-config]
items:
- from: build/app.jar
to: /app/app.jar
order: 10
```Зависимости разрешаются рекурсивно. `order` (опционально) - порядок добавления файла, где чем меньше - тем первее будет добавлен файл в образ.
Создан на базе [Jib Core API](https://github.com/GoogleContainerTools/jib).