Procfile
웹 애플리케이션을 실행하기 위한 명령어를 정의하는 파일.
Procfile은 프로세스 형식으로 작성한다.
<프로세스 유형>: <명령어>
<프로세스 유형>
실행하려는 프로세스의 유형.
<명령어>
해당 프로세스를 실행하기 위한 명령어.
장점: 애플리케이션의 각 프로세스를 독립적으로 관리, 실행이 가능하다.
* Procfile은 애플리케이션의 루트 디렉토리에 위치해야 한다.
Procfile 코드:
springapp: appstart
.ebextensions
https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/ebextensions.html
.ebextensions는 AWS Elastic Beanstalk에서 환경 구성을 위해 사용되는 파일이다.
구성파일은 .config 파일 확장명의 yaml 파일으로 구성하면 된다.
숫자-이름.config 형태의 파일로 만들면 되고,
AWS Elastic Beanstalk가 파일을 읽는 순서는 숫자, 문자 순 정렬로 읽게 되며,
파일 이름은 정해진 형식이 없으므로, 임의로 지으면 된다.
요구사항 정리
1. 모든 구성 파일은 애플리케이션의 루트 디렉토리에 .ebextensions라는 단일 폴더에 저장한다.
2. 구성 파일의 확장명은 .config 이여야 한다.
3. 구성 파일은 yaml이나 json 형태를 따라야 한다.
4. 각 구성 파일에는 각 키를 한 번만 사용해야 한다.
* 자세한 예시는 아래의 공식 문서 레파지토리를 참조하면 된다.
https://github.com/awsdocs/elastic-beanstalk-samples/tree/master/configuration-files
00-makeFiles.config 코드:
files:
"/sbin/appstart":
mode: "000755"
owner: webapp
group: webapp
content: |
#!/usr/bin/env bash
JAR_PATH=/var/app/current/application.jar
# run app
java -Dspring.profiles.active=prod -Dfile.encoding=UTF-8 -jar $JAR_PATH
.config 파일은 설정 파일이므로, root 권한이 아닌 사용자 권한으로 실행된다.
즉, .config 파일 내에서 권한이 필요한 명령어를 직접 실행하는 것은 불가능하다.
그러므로, files 옵션을 사용해서 root 권한으로 실행되는 파일을 생성하고, 해당 파일을 hooks 내에서 실행하여
명령어를 수행하는 방식을 사용하게 된다.
sbin은 root 권한을 가진 사용자만 이용할 수 있는 디렉토리를 의미한다.
mode
mode는 000755 이므로
소유자에게 읽기(4), 쓰기(2), 실행(1) 권한.
그룹에게 읽기(4), 실행(1) 권한.
기타 사용자에게 읽기(4), 실행(1) 권한.
을 의미한다.
content
/sbin/appstart 파일에 쓰여질 내용을 정의하는 부분이다.
| 는 Multiline Block Scalar라고 하는데, yaml 파일에서 여러 줄로 이어지는 값을 나타내는 문법.
| 를 통해 여러 줄로 구성된 스크립트를 작성할 수 있다.
application-prod.yml파일, UTF-8 인코딩, $JAR_PATH 경로의 JAR 파일을 실행한다는 내용을 담고 있다.
'Skills > DevOps' 카테고리의 다른 글
#3 AWS Elastic Beanstalk 기반 CI/CD 블루그린 배포 - deploy.yml (0) | 2023.05.23 |
---|---|
#0 AWS Elastic Beanstalk 기반 CI/CD 블루그린 배포 - 배포 프로세스 (0) | 2023.05.22 |
가상화, 가상머신(Virtual Machine)과 컨테이너(Container) 비교 (0) | 2023.05.16 |
#1 AWS Elastic Beanstalk 기반 CI/CD 블루그린 배포 - RDS, Elastic Beanstalk, IAM, Github Actions (0) | 2023.05.16 |
무중단 배포와 배포 전략(롤링, 블루-그린, 카나리, A/B) (0) | 2023.05.08 |