Режим Docker
Запускайте RAPS🌼RAPSRust CLI for Autodesk Platform Services.View in glossary у контейнерному середовищі без встановлення Rust🦀RustSystems programming language known for safety.View in glossary або керування залежностями. Ідеально підходить для CI/CD🔁CI/CDAutomated build, test, and deployment pipelines.View in glossary конвеєрів, ізольованих середовищ та розгортання у Kubernetes.
Швидкий старт
# Завантажити офіційний образ
docker pull ghcr.io/dmytro-yemelianov/raps:latest
# Виконати команду
docker run --rm \
-e APS_CLIENT_ID="your_client_id" \
-e APS_CLIENT_SECRET="your_client_secret" \
ghcr.io/dmytro-yemelianov/raps:latest \
auth test
Доступні образи
| Тег | Опис |
|---|---|
latest | Останній стабільний реліз |
4.14.0 | Конкретна версія |
3.8 | Останній патч серії 3.8.x |
3 | Останній мінорний реліз серії 3.x |
Підтримка кількох архітектур
Образи доступні для:
linux/amd64(x86_64)linux/arm64(Apple Silicon, ARM-сервери)
# Завантажити для конкретної архітектури
docker pull --platform linux/arm64 ghcr.io/dmytro-yemelianov/raps:latest
Базове використання
Окремі команди
# Перевірити автентифікацію
docker run --rm \
-e APS_CLIENT_ID="$APS_CLIENT_ID" \
-e APS_CLIENT_SECRET="$APS_CLIENT_SECRET" \
ghcr.io/dmytro-yemelianov/raps:latest \
auth test
# Список бакетів
docker run --rm \
-e APS_CLIENT_ID="$APS_CLIENT_ID" \
-e APS_CLIENT_SECRET="$APS_CLIENT_SECRET" \
ghcr.io/dmytro-yemelianov/raps:latest \
bucket list --output json
З монтуванням томів
Монтуйте локальні директорії для завантаження/вивантаження файлів:
# Завантажити файл
docker run --rm \
-e APS_CLIENT_ID="$APS_CLIENT_ID" \
-e APS_CLIENT_SECRET="$APS_CLIENT_SECRET" \
-v $(pwd)/models:/data \
ghcr.io/dmytro-yemelianov/raps:latest \
object upload my-bucket /data/model.rvt
# Скачати файли
docker run --rm \
-e APS_CLIENT_ID="$APS_CLIENT_ID" \
-e APS_CLIENT_SECRET="$APS_CLIENT_SECRET" \
-v $(pwd)/downloads:/output \
ghcr.io/dmytro-yemelianov/raps:latest \
object download my-bucket model.rvt --output /output/
Інтерактивний режим
Запуск інтерактивної оболонки всередині Docker🐳DockerContainer platform for consistent environments.View in glossary:
docker run -it --rm \
-e APS_CLIENT_ID="$APS_CLIENT_ID" \
-e APS_CLIENT_SECRET="$APS_CLIENT_SECRET" \
ghcr.io/dmytro-yemelianov/raps:latest \
shell
Docker Compose
Базова конфігурація
# docker-compose.yml
version: '3.8'
services:
raps:
image: ghcr.io/dmytro-yemelianov/raps:latest
environment:
- APS_CLIENT_ID=${APS_CLIENT_ID}
- APS_CLIENT_SECRET=${APS_CLIENT_SECRET}
volumes:
- ./models:/data
command: ["bucket", "list"]
Запуск:
docker-compose run --rm raps bucket list
docker-compose run --rm raps object upload my-bucket /data/model.rvt
Багатосервісна конфігурація
# docker-compose.yml
version: '3.8'
services:
# Сервіс завантаження
uploader:
image: ghcr.io/dmytro-yemelianov/raps:latest
environment:
- APS_CLIENT_ID=${APS_CLIENT_ID}
- APS_CLIENT_SECRET=${APS_CLIENT_SECRET}
volumes:
- ./models:/data:ro
profiles: ["upload"]
command: ["object", "upload", "my-bucket", "/data/"]
# Монітор трансляцій
translator:
image: ghcr.io/dmytro-yemelianov/raps:latest
environment:
- APS_CLIENT_ID=${APS_CLIENT_ID}
- APS_CLIENT_SECRET=${APS_CLIENT_SECRET}
profiles: ["translate"]
# Задачі обслуговування
cleanup:
image: ghcr.io/dmytro-yemelianov/raps:latest
environment:
- APS_CLIENT_ID=${APS_CLIENT_ID}
- APS_CLIENT_SECRET=${APS_CLIENT_SECRET}
profiles: ["cleanup"]
command: ["bucket", "list", "--output", "json"]
Файл середовища
Використовуйте файл .env для облікових даних:
# .env
APS_CLIENT_ID=your_client_id
APS_CLIENT_SECRET=your_client_secret
APS_REGION=US
# Docker автоматично завантажить .env
docker-compose run --rm raps auth test
Інтеграція з CI/CD
GitLab CI
# .gitlab-ci.yml
variables:
RAPS_IMAGE: ghcr.io/dmytro-yemelianov/raps:4.14.0
translate:
image: $RAPS_IMAGE
variables:
APS_CLIENT_ID: $APS_CLIENT_ID
APS_CLIENT_SECRET: $APS_CLIENT_SECRET
script:
- raps auth test
- raps bucket create ci-$CI_PIPELINE_ID --retention transient
- raps object upload ci-$CI_PIPELINE_ID models/*.rvt --batch
after_script:
- raps bucket delete ci-$CI_PIPELINE_ID --yes || true
Jenkins Pipeline
// Jenkinsfile
pipeline {
agent {
docker {
image 'ghcr.io/dmytro-yemelianov/raps:4.14.0'
}
}
environment {
APS_CLIENT_ID = credentials('aps-client-id')
APS_CLIENT_SECRET = credentials('aps-client-secret')
}
stages {
stage('Test Auth') {
steps {
sh 'raps auth test'
}
}
stage('Upload') {
steps {
sh 'raps object upload my-bucket models/*.rvt --batch'
}
}
}
}
Azure DevOps
# azure-pipelines.yml
pool:
vmImage: 'ubuntu-latest'
container:
image: ghcr.io/dmytro-yemelianov/raps:4.14.0
variables:
- group: aps-credentials
steps:
- script: raps auth test
env:
APS_CLIENT_ID: $(APS_CLIENT_ID)
APS_CLIENT_SECRET: $(APS_CLIENT_SECRET)
- script: raps bucket list --output json
env:
APS_CLIENT_ID: $(APS_CLIENT_ID)
APS_CLIENT_SECRET: $(APS_CLIENT_SECRET)
CircleCI
# .circleci/config.yml
version: 2.1
jobs:
translate:
docker:
- image: ghcr.io/dmytro-yemelianov/raps:4.14.0
environment:
APS_CLIENT_ID: $APS_CLIENT_ID
APS_CLIENT_SECRET: $APS_CLIENT_SECRET
steps:
- checkout
- run: raps auth test
- run: raps bucket list
workflows:
main:
jobs:
- translate
Kubernetes
Job для одноразових завдань
# raps-job.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: raps-translate
spec:
template:
spec:
containers:
- name: raps
image: ghcr.io/dmytro-yemelianov/raps:4.14.0
command: ["raps", "translate", "start", "$(URN)", "--wait"]
env:
- name: APS_CLIENT_ID
valueFrom:
secretKeyRef:
name: aps-credentials
key: client-id
- name: APS_CLIENT_SECRET
valueFrom:
secretKeyRef:
name: aps-credentials
key: client-secret
- name: URN
value: "dXJuOmFkc2sub2JqZWN0czp..."
restartPolicy: Never
CronJob для запланованих завдань
# raps-cronjob.yaml
apiVersion: batch/v1
kind: CronJob
metadata:
name: raps-cleanup
spec:
schedule: "0 2 * * 0" # Щонеділі о 2:00
jobTemplate:
spec:
template:
spec:
containers:
- name: raps
image: ghcr.io/dmytro-yemelianov/raps:4.14.0
command: ["/bin/sh", "-c"]
args:
- |
raps bucket list --output json | \
jq -r '.[] | select(.policyKey == "transient") | .bucketKey' | \
while read bucket; do
raps bucket delete "$bucket" --yes || true
done
envFrom:
- secretRef:
name: aps-credentials
restartPolicy: OnFailure
Створення Kubernetes Secret
kubectl create secret generic aps-credentials \
--from-literal=client-id="$APS_CLIENT_ID" \
--from-literal=client-secret="$APS_CLIENT_SECRET"
Створення власних образів
Розширте образ RAPS додатковими інструментами:
# Dockerfile
FROM ghcr.io/dmytro-yemelianov/raps:4.14.0
# Додати jq для обробки JSON
RUN apk add --no-cache jq
# Додати власні скрипти
COPY scripts/ /scripts/
RUN chmod +x /scripts/*.sh
# Команда за замовчуванням
CMD ["raps", "--help"]
Збірка та запуск:
docker build -t my-raps .
docker run --rm my-raps bucket list
Усунення неполадок
Відмова в доступі до томів
# Рішення: запуск від поточного користувача
docker run --rm \
-u $(id -u):$(id -g) \
-v $(pwd)/models:/data \
ghcr.io/dmytro-yemelianov/raps:latest \
object upload my-bucket /data/model.rvt
Проблеми з мережею
# Використати мережу хоста (за потреби)
docker run --rm --network host \
-e APS_CLIENT_ID="$APS_CLIENT_ID" \
-e APS_CLIENT_SECRET="$APS_CLIENT_SECRET" \
ghcr.io/dmytro-yemelianov/raps:latest \
auth test
Режим зневадження
docker run --rm \
-e APS_CLIENT_ID="$APS_CLIENT_ID" \
-e APS_CLIENT_SECRET="$APS_CLIENT_SECRET" \
ghcr.io/dmytro-yemelianov/raps:latest \
--debug auth test
Пов’язана документація
- Режим CLI — Довідник командного рядка
- GitHub Actions — GitHub CI/CD
- Конфігурація — Змінні середовища
- Репозиторій raps-docker — Вихідний код Docker-образу