앱 배포
Dedicated Container에 장기 실행 Node.js, Python 및 Go 앱을 배포하고 PHP-FPM, PHP 버전, 확장 기능 및 php.ini를 관리합니다.
이 가이드에서는 Dedicated Container에 장기 실행 Node.js, Python 또는 Go 앱을 배포하는 방법, PHP-FPM을 관리하는 방법, PHP 버전을 변경하고 확장 기능을 설치하며 php.ini를 편집하는 방법을 설명합니다.
런타임
모든 컨테이너에는 다음 런타임이 포함되며 기본 PATH에서 사용할 수 있습니다(node, npm, python3, go, java, ruby, php 등).
| 런타임 | 버전 |
|---|---|
| PHP | 8.1 및 8.2, 콘솔에서 전환 가능 |
| Node.js, Python, Go, Java, Ruby | 이미지마다 각 런타임의 버전 하나 제공 |
정확한 버전을 보려면 컨테이너의 설정 관리 탭을 열고 런타임 환경 카드를 확인합니다.
앱 배포
컨테이너 페이지의 앱 관리 탭에는 PHP-FPM, Node.js, Python, Golang의 네 가지 런타임 카드가 있습니다. 아직 앱을 배포하지 않았다면 Node.js, Python 및 Golang 카드에 앱 배포 버튼이 표시됩니다.
1단계: 코드 업로드
코드는 컨테이너 내부의 /var/www/html 또는 그 하위 디렉터리에 있어야 합니다. 파일 관리 탭의 루트 /는 컨테이너의 /var/www/html에 해당합니다. 압축 파일을 업로드한 후 해당 위치에서 압축을 풀거나, 원격 다운로드를 사용하여 URL에서 가져올 수 있습니다. 파일 및 예약 작업을 참조하십시오.
앱에 종속성이 필요한 경우(예: npm install 또는 pip install로 설치) 로컬에서 빌드하고 종속성을 포함한 디렉터리를 업로드합니다.
2단계: 시작 설정 입력
컨테이너 페이지를 열고 앱 관리 탭으로 전환합니다.
필요한 런타임 카드에서 앱 배포를 클릭합니다.
대화 상자에 다음 정보를 입력합니다.
필드 설명 시작 명령어 앱을 시작하는 전체 명령입니다. 예: node app.js,npm start,python app.py,gunicorn app:app -b 0.0.0.0:$PORT또는./app작업 디렉터리 명령을 실행할 디렉터리입니다. 기본값은 /var/www/html입니다수신 포트 컨테이너 내부에서 앱이 수신하는 포트입니다. 기본값은 3000이며 범위는 1–65535입니다배포 및 시작을 클릭합니다. "앱이 배포되어 시작되었습니다"이 표시되면 카드 상태가 실행 중으로 변경됩니다.
입력한 포트는 PORT 환경 변수로 프로세스에 전달됩니다. 포트를 하드 코딩하지 않도록 코드에서 PORT를 읽으십시오(예: Node.js의 process.env.PORT).
시작 명령의 실행 방식
- 명령은
/bin/sh -c를 통해 실행되므로 인수를 전달하고, 환경 변수(예:$PORT)를 확장하고, 간단한 셸 구문을 사용할 수 있습니다. - 앱은 컨테이너의
www사용자로 실행됩니다. 이 사용자가 코드 파일을 읽고 앱에서 사용하는 출력 디렉터리에 쓸 수 있는지 확인하십시오. - 컨테이너 내부의 프로세스 관리자가 앱을 관리합니다. 컨테이너가 시작되면 앱을 시작하고, 앱이 예기치 않게 종료되면 자동으로 다시 시작합니다.
- Go의 경우 로컬에서 Linux 바이너리를 컴파일하여 업로드한 후
./app과 같은 명령을 사용합니다.
런타임당 하나의 앱
각 런타임 카드는 하나의 앱 프로세스를 관리합니다. 예를 들어 Node.js 카드에서는 Node.js 앱 하나를 실행할 수 있습니다. 앱을 배포하면 카드의 앱 배포 버튼이 시작, 중지, 다시 시작 및 로그로 바뀝니다.
실행 중인 앱 관리
앱 관리 탭에서 다음 작업을 수행합니다.
- 시작 / 중지 / 다시 시작으로 앱 프로세스를 제어합니다.
- 로그에서 앱의 stdout 및 stderr 마지막 200줄을 확인합니다. 대화 상자에서 새로고침을 클릭하여 다시 불러옵니다.
- 상태 새로고침으로 모든 런타임 카드를 다시 불러옵니다. 각 카드에는 확인 가능한 경우 버전, PID 및 가동 시간이 표시됩니다.
런타임에 앱을 배포하지 않은 경우 해당 카드에는 중지됨 상태와 앱 배포 버튼이 표시됩니다. 이 상태에서 시작을 클릭하면 먼저 앱을 배포하라는 안내가 표시됩니다.
PHP-FPM
PHP-FPM은 모든 컨테이너에서 기본적으로 실행되므로 따로 배포할 필요가 없습니다. PHP-FPM 카드에서 중지, 시작, 다시 시작 및 로그 확인을 수행할 수 있습니다.
PHP 버전 변경
- PHP 버전 전환을 클릭합니다. 이 버튼은 개요 탭의 빠른 작업 및 설정 관리 탭의 PHP 설정 카드에 있습니다.
- PHP 8.1 또는 PHP 8.2를 선택하고 전환 확인을 클릭합니다.
변경 후 PHP-FPM이 자동으로 다시 시작되며, 기본 PHP를 사용하는 모든 코드에 영향을 줍니다. 변경하기 전에 코드가 대상 버전에서 동작하는지 확인하십시오.
확장 기능 및 php.ini
PHP 설정 탭을 엽니다.
- PHP 확장: 로드된 확장 기능은 초록색 태그로 표시됩니다. 태그를 클릭하면 해당 확장 기능이 비활성화되므로, 핵심 확장 기능은 주의해서 다루십시오. 설치하려면 이름(예:
redis,imap,soap,gmp)을 입력하고 설치를 클릭합니다. 확장 기능은 공식 Alpine 패키지에서 설치됩니다. - php.ini: 브라우저에서 활성 PHP 버전의 전체 php.ini를 편집합니다. 저장하면 PHP-FPM이 자동으로 핫 재시작됩니다.
확장 기능과 php.ini는 활성 PHP 버전에만 적용됩니다. 버전을 변경한 후 새로고침을 클릭하여 해당 버전의 구성을 불러오십시오.
모니터링 및 컨테이너 작업
- 개요 탭에는 CPU 사용률, 메모리 사용량, 디스크 사용량 및 네트워크 트래픽과 함께 컨테이너의 CPU, 메모리 및 디스크 한도가 표시됩니다.
- 상단 버튼으로 컨테이너를 시작, 중지 또는 다시 시작합니다. 컨테이너가 중지된 동안에는 내부의 모든 앱을 사용할 수 없습니다.
- Dedicated Containers 목록에서 컨테이너를 삭제할 수 있습니다. 컨테이너를 삭제하면 모든 데이터가 영구적으로 지워지며 복구할 수 없습니다.
API를 통한 배포
콘솔에서 사용하는 엔드포인트를 직접 호출할 수도 있습니다. Authorization: Bearer <token> 헤더에 로그인 토큰을 전달합니다. container_id는 컨테이너 목록에서 반환된 id입니다.
# List containers
curl -H "Authorization: Bearer $TOKEN" \
https://api.yeap.cloud/api/user/host/containers
# Deploy a Node.js app
curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
https://api.yeap.cloud/api/user/host/apps/create \
-d '{"container_id": 123, "type": "nodejs", "config": "node app.js", "working_dir": "/var/www/html", "port": 3000}'
# App status and recent logs
curl -H "Authorization: Bearer $TOKEN" \
"https://api.yeap.cloud/api/user/host/apps/status?container_id=123&type=nodejs"
curl -H "Authorization: Bearer $TOKEN" \
"https://api.yeap.cloud/api/user/host/apps/logs?container_id=123&type=nodejs&lines=200"type은 nodejs, python 또는 golang일 수 있습니다. 시작, 중지 또는 다시 시작하려면 본문 {"container_id": 123, "type": "nodejs"}와 함께 POST /api/user/host/apps/start, /stop 또는 /restart를 호출합니다.