Kamal을 이용한 Bugsink 배포는 몇 가지 핵심 단계를 거칩니다.
1. Kamal 초기 설정
Kamal 배포를 시작하기 위해 먼저 프로젝트를 초기화합니다.
-
bundle init및bundle add kamal(Kamal 2 이상 버전 권장) -
kamal init명령으로 기본 설정 파일을 생성 -
.env파일을 생성하고.gitignore,.dockerignore에 추가하여 민감 정보 노출 방지
2. 비밀 정보 관리
Kamal에서 비밀 정보를 관리하는 두 가지 주요 방법이 있습니다.
-
가장 간단한 방법:
.kamal/secrets파일에 직접 하드코딩 -
더 안전한 방법:
.env파일에 변수를 정의하고dotenv kamal명령으로 실행.kamal/secrets예시:KAMAL_REGISTRY_PASSWORD=$KAMAL_REGISTRY_PASSWORD SECRET_KEY=$SECRET_KEY CREATE_SUPERUSER=$CREATE_SUPERUSER- 실제 값은
.env파일에 설정합니다.
3. Docker Registry 설정
Docker 이미지를 저장할 레지스트리가 필요합니다.
- GitLab은 무료 레지스트리를 제공하며,
read_repository및write_repository권한을 가진 액세스 토큰을 생성하여KAMAL_REGISTRY_PASSWORD로 사용합니다.
4. Dockerfile 생성
Kamal은 “App” 모드에서 로컬 Dockerfile을 필요로 합니다.
-
간단한
Dockerfile예시:dockerfile FROM bugsink/bugsink:latest # 특정 버전 사용 시: FROM bugsink/bugsink:1.61 -
원격 이미지를 사용할 수도 있으나, Kamal이 이미지를 찾도록 서비스 레이블을 수동으로 추가해야 하므로 로컬
Dockerfile이 더 편리합니다.
5. Kamal 설정 파일 (config/deploy.yml)
config/deploy.yml 파일은 Bugsink 배포의 핵심 설정입니다.
-
service:bugsink -
image:YourUserName/bugsink(GitLab Registry 경로) -
volumes:bugsink_storage:/app/storage(데이터 영속성을 위한 볼륨) -
servers:web서버의 IP 주소 지정 (예:1.2.3.4) proxy:ssl: true(HTTPS 활성화)host: bugsink.YourCompany.com(DNS 레코드가 웹 서버를 가리키는지 확인, Let’s Encrypt 인증서 발급)app_port: 8000healthcheck:path: /,interval: 2
env:clear:PORT: 8000,DATABASE_PATH,BEHIND_HTTPS_PROXY: 'true',SECURE_PROXY_SSL_HEADER: 'https',BASE_URL,SITE_TITLE,ALLOWED_HOSTS: '*'등secret:SECRET_KEY,CREATE_SUPERUSER(.env및.kamal/secrets에 설정)
-
registry:server: registry.gitlab.com,username,password(KAMAL_REGISTRY_PASSWORD) builder:arch: amd64
6. 배포 및 재부팅
-
모든 설정이 완료되면 Git 커밋을 생성하고
dotenv kamal deploy명령으로 배포합니다. -
환경 변수 변경 후 앱을 재부팅하려면
dotenv kamal app boot --version=SHAOFYOURGITCOMMIT명령을 사용합니다.