yakcloud-starter: 배포 기반(스타터 앱+CI+매니페스트) + Claude Code 스킬 yakcloud-deploy
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -0,0 +1,53 @@
|
||||
# 지원 데이터 소스 & 바인딩 env 주입
|
||||
|
||||
앱은 접속정보를 **하드코딩하지 말고**, 바인딩된 소스가 주입하는 아래 env로 읽는다.
|
||||
매니페스트에서 `binds: [{ alias, source }]` 로 연결하면, `alias`(대문자화)가 env 프리픽스가 된다.
|
||||
예: `alias: db` → `DB_URL`, `DB_HOST`, `DB_PORT`, `DB_USERNAME`, `DB_PASSWORD`, `DB_DB`.
|
||||
|
||||
## 지원 소스 (`requires[].type`)
|
||||
| type | 소스 | 비고 |
|
||||
|---|---|---|
|
||||
| `postgresql` | PostgreSQL | 관계형 |
|
||||
| `mysql` | MySQL | 관계형 |
|
||||
| `mariadb` | MariaDB | 관계형(MySQL 와이어 호환) |
|
||||
| `mongodb` | MongoDB | 도큐먼트 |
|
||||
| `redis` | Redis | 인메모리 KV/캐시 |
|
||||
| `minio` | MinIO | S3 호환 오브젝트 스토리지 |
|
||||
| `rabbitmq` | RabbitMQ | 메시지 브로커(AMQP) |
|
||||
| `solr` | Solr | 검색 엔진 |
|
||||
| `oracle` | Oracle | 관계형(외부 연결) |
|
||||
|
||||
`plan` ∈ `{small, medium, large}`.
|
||||
|
||||
## 소스별 주입 env (예시 alias=`db`)
|
||||
모든 타입 공통: **`<ALIAS>_HOST`**, **`<ALIAS>_PORT`**.
|
||||
|
||||
| type | 추가 env 키 | `<ALIAS>_URL` 형식 |
|
||||
|---|---|---|
|
||||
| `postgresql` | `_USERNAME` `_PASSWORD` `_DB` | `postgresql://user:pw@host:port/db` |
|
||||
| `mysql` | `_USERNAME` `_PASSWORD` `_DB` | `mysql://user:pw@host:port/db` |
|
||||
| `mariadb` | `_USERNAME` `_PASSWORD` `_DB` | `mysql://user:pw@host:port/db` |
|
||||
| `mongodb` | `_USERNAME` `_PASSWORD` `_DB` | `mongodb://user:pw@host:port/db?authSource=db` |
|
||||
| `redis` | `_USERNAME`(빈) `_PASSWORD` `_DB`(번호) | `redis://:pw@host:port/db` |
|
||||
| `minio` | `_ACCESS_KEY` `_SECRET_KEY` `_ENDPOINT` `_BUCKET` `_REGION` `_USE_SSL` | `_URL`=`_ENDPOINT` |
|
||||
| `rabbitmq` | `_USERNAME` `_PASSWORD` `_VHOST` `_MGMT_URL` | `amqp://user:pw@host:port/vhost` |
|
||||
| `solr` | `_CORE` `_ENDPOINT` | `http://host:port/solr/core` |
|
||||
| `oracle` | `_USERNAME` `_PASSWORD` `_SERVICE` `_JDBC_URL` `_DSN` | `oracle://user:pw@host:port/service` |
|
||||
|
||||
> 비밀번호·키는 인클러스터 Secret으로 주입되고 콘솔/브라우저에 노출되지 않는다. URL의 user/pw는 URL-인코딩됨.
|
||||
|
||||
## 앱 코드 예시
|
||||
```python
|
||||
# Python — alias=db (postgres)
|
||||
import os, psycopg2
|
||||
conn = psycopg2.connect(os.environ["DB_URL"])
|
||||
```
|
||||
```js
|
||||
// Node — alias=mongo
|
||||
const client = new MongoClient(process.env.MONGO_URL);
|
||||
```
|
||||
```js
|
||||
// MinIO(S3) — alias=files
|
||||
const s3 = new S3Client({ endpoint: process.env.FILES_ENDPOINT, region: process.env.FILES_REGION,
|
||||
credentials: { accessKeyId: process.env.FILES_ACCESS_KEY, secretAccessKey: process.env.FILES_SECRET_KEY } });
|
||||
```
|
||||
Reference in New Issue
Block a user