Dokku 설치 및 설정하기

2016-03-25

linux note update tip docker dokku

개인적으로 AWS EC2 인스턴스에 Dokku 라는 것을 설치해서 사용하는 중인데요. Dokku 는 Heroku 와 같은 일종의 PaaS(Platform as a Service) 들 중 하나 입니다. Docker를 활용하며, 약 200줄 짜리의 셸 스크립트 등으로 구성되어 있습니다. 대부분의 PaaS 와 다른 점이 있다면, Dokku 는 서비스를 제공하는 업체나 회사의 서버가 아닌, 사용자의 서버에서 돌아갑니다. 이 글을 통해 Dokku 를 설치하는 방법과 설정하는 방법을 알아봅시다.

설치

먼저 Dokku 를 설치할 서버의 셸에 접속합니다.

Debian GNU/Linux 계열 배포판

Dokku 팀 쪽에서 제공하는 스크립트를 이용하여 설치합니다.

$ wget https://raw.githubusercontent.com/dokku/dokku/v0.4.14/bootstrap.sh
$ sudo DOKKU_TAG=v0.4.14 bash bootstrap.sh

Arch Linux

AUR 로부터 dokku 패키지를 빌드하여 설치합니다.

yaourt -S dokku

초기 설정

DNS 설정

필요한 경우, Dokku 가 설치된 서버에 도메인을 연결해 줍시다. 연결된 도메인은 Dokku 를 통해 배포된 앱의 주소로 사용됩니다. 아래와 같은 방법으로, DNS 를 설정합니다. 설정에 문제가 없는 경우, ssh 로 연결시 해당 도메인으로 연결 할 수 있어야 합니다.

(레코드 타입 / 이름 / 값(또는 서버 IP))
A / example.com / <서버 IP 주소>
A / *.example.com / <서버 IP 주소>

웹 브라우저에서 Dokku 초기 설정 하기

설치와 DNS 설정 등을 마쳤다면, 이번에는 서버 쪽에서 Dokku 초기 설정을 할 차례입니다. 웹 브라우저를 열고, 주소창에 서버의 IP 주소나 도메인을 쳐서 이동하세요. 아래 이미지와 같은 화면이 나타날 것입니다.

이미지 출처 : https://assets.digitalocean.com/articles/dokku_intro/dokku_setup.png

DNS 설정을 통해, 도메인을 서버와 연결할 경우 다음과 같이 설정합니다.

  • Hostname 에 본인이 서버와 연결한 도메인을 입력합니다. (예시 : example.com)
  • “Use virtualhost naming for apps” 항목을 체크 합니다.
  • 이렇게 하면, Dokku 를 통해 배포된 앱 들을 <앱-이름>.example.com 을 통해 이용할 수 있습니다.

Dokku 를 통해 앱 배포하기

이제 Dokku 를 통해 앱을 배포해 봅시다. 먼저, 서버에 접속해서 앱을 하나 생성합시다.

dokku apps:create <원하는-앱-이름>

앱에 데이터베이스 연결하기

생성된 앱에는 기본적으로 데이터베이스가 연결되어 있지 않습니다. 필요한 경우 아래 과정을 거쳐, 데이터 베이스를 연결합니다.

먼저 Dokku 에서 사용 가능한 데이터베이스 플러그인을 설치합니다. 여기 에서 어떤 플러그인이 있는지 확인 할 수 있습니다.

이 포스트에서는 PostgreSQL 플러그인을 예로 들어 설치합니다.

# PostgreSQL 플러그인 설치
sudo dokku plugin:install https://github.com/dokku/dokku-postgres.git

# PostgreSQL 서비스 생성
dokku postgres:create <원하는-DB-서비스-이름>

이제 DB 서비스와 앱을 연결합시다.

dokku postgres:link <앱과-연결할-DB-서비스> <DB-서비스를-연결할-앱>

앱 배포하기

배포는 git 을 이용해 이뤄집니다. 먼저 배포할 앱의 디렉터리에 접근합니다. 그 다음, git 저장소를 초기화 하지 않은 경우, 초기화 하고, 리모트를 추가합니다.

cd <배포할-앱의-디렉터리>

# git 저장소가 아닌경우 새로 초기화
git init

# 서버의 Dokku 앱을 리모트로 추가
git remote add dokku [email protected]:<배포할-앱의-이름>

수정 사항을 커밋하고, 푸시하여 앱을 배포합니다.

git add .
git commit -m "Update"

# 앱 배포하기
git push dokku master

앱 배포가 성공적으로 된 경우, 아래와 같은 것을 보실 수 있게 됩니다.

=====> Application deployed:
       http://<배포된-앱-이름>.example.com

참고문헌 및 참고 웹페이지

광고 차단 소프트웨어를 사용하고 계신 것 같습니다. 혹시 글이 마음에 들었다면, 광고 차단을 해제해 주시거나 후원을 해 주시는 것은 어떤가요?

It seems like you're using ad block software, If you like the post, Would you like to disable that or donate me a bit?

Shoes

Let's Encrypt 를 이용해 Dokku 앱 HTTPS 연결 지원하기

2016-03-25

웹사이트들을 이용하다 보면, 보안을 위해 HTTPS 연결 지원을 하는 경우를 어렵지 않게 볼 수 있습니다. 보통 HTTPS 연결을 지원하려면, TLS/SSL 인증서를 발급받아야 합 …

Ubuntu Server 에 Docker 설치하고 설정하기.

2015-11-16

필자는 AWS EC2 VM에 도커(Docker)를 한번 설치하여, 이것저것 개발한 웹 앱과 서버 등을 돌려보기로 했습니다. 그러면서 포스팅으로도 정리하려 합니다. 먼저, 설치/설정을 대략 했는데, 이 포스트로 그 과정을 정리합니다. Docker?? 도커(Docker)는, 리눅스 컨테이너 기술을 기반으로, 앱을 배포할 때 필요한 모든 것을 하나의 컨테이너에 담아 OS에 상관없이 앱을 패키징하여 배포할 수 있도록 해 주는 프로그램 입니다.

아치리눅스에서 SSD TRIM 사용하기

2015-12-22

하드디스크에서 파일을 지우면, 디스크에서 완전히 파일을 지우지 않고 위치를 알려주는 연결만 끊었습니다. 그리고 다른 새 파일을 저장할 때, 덮어쓰기 했습니다. 완전히 지우고 새로 저장 하기엔 시간이 오래 걸리는 것이 그 이유입니다. 실제로 Windows 나 리눅스에서 파일을 지우거나 디스크를 “빠른 포맷” 으로 포맷하면, 파일이 완전히 지워지지 않고, 연결만 끊김니다. 나중에 덮어씌우면 되니까요.