簡単にPaaSを作れるDokkuを日常業務に、趣味にと便利に使っています。こんなことできないかな?と思って調べると、大抵はプラグインがあったりします(感謝。ただ、英語なのと情報がまとまっていないので、よく使っている設定をまとめました。
※構築はここでは書きません
サイト名が一致しない場合にエラーを返したい
デフォルトではサーバー名が一致しない場合には、一番最初にデプロイしたサイトが表示されるようです。予期しないサイトが見えると良く無いのでエラーを返すのが適切です。
/etc/nginx/conf.d/00-default-vhost.conf を以下のように作成し、nginxをリスタートします。
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
access_log off;
return 410;
}
注意:
/etc/nginx/sites-enabled/defaultにページを返す設定がデフォルトで入っている場合があり、その場合には上記設定を行うと設定エラーになりますので/etc/nginx/sites-enabled/defaultの設定を削除するか、上記のように410を返すように変更してください。
developブランチをデプロイしたい
通常はデプロイされるのはmasterブランチなので、git pushでmasterに上書きする方法もありますが、app毎に以下のコマンドでブランチを変更できます。
dokku git:set myapp deploy-branch develop
ホストの領域をコンテナにマウントしたい
ログ領域やイメージなど、ホスト側領域をコンテナにマウントしたい場合は以下になります。
dokku storage:mount myapp host-dir:container-dir
dockerイメージサイズを小さくしたい
標準ではBuildPackになっており、何も考えずにデプロイできますが、1.5GBくらいのイメージになります。サイトが多くなるとディスクを圧迫します。
Dockerfileを作れば、alpineやslim系イメージを使う事ができます。
この時、Port Mappingを手動でする必要がある場合があります。
CIで自動デプロイしたい
GitLabの場合は以下のエントリーを参照ください。
plug-ins
使うと便利なプラグインの紹介です。
BASIC認証をかけたい
テストサイトなど、簡単に認証をかけたい場合に便利です。
dokku-http-auth
https://github.com/dokku/dokku-http-auth
sudo dokku plugin:install https://github.com/dokku/dokku-http-auth.git
SSL化したい
Let's Encrypt
https://github.com/dokku/dokku-letsencrypt
さくっとSSLを使う場合はこれですね。自動的にSSL化 & auto-renewもしてくれます。
sudo dokku plugin:install https://github.com/dokku/dokku-letsencrypt.git
hostnameをコンテナIDでなく、ホスト名にしたい
デフォルトではhostname=コンテナIDになってしまいます。インストールすると、特に設定不要でホストのホスト名がコンテナに渡されます。
dokku-hostname
https://github.com/michaelshobbs/dokku-hostname
sudo dokku plugin:install https://github.com/michaelshobbs/dokku-hostname.git dokku-hostname