-
http proxy
-
nginx-proxy
-
Let's Encrypt
-
gitbucket
-
knowledge
-
wordpress
-
mysql
環境設定
|環境変数|説明|
|HOSTNAME_GIT|gitbucketにアクセスするためのvirtual host name
(reverse proxyで利用)|
|HOSTNAME_WORDPRESS|wordpressにアクセスするためのvirtual host name
(reverse proxyで利用)|
|HOSTNAME_KNOWLEDGE|knowledgeにアクセスするためのvirtual host name
(reverse proxyで利用)|
|CERT_HOST|マルチドメイン証明書に含めるホスト名|
|LETSENCRYPT_EMAIL|Let's Encryptで利用するe-mailアドレス|
最初の一回は、証明書を取得し、knowledgeをbuildする必要がある。
sh ./init_certs.sh
keyをsaveしたというログが出るまでじっと待つ。でたら、Ctrl-Cで停止してから、
sh ./init_certs.sh down
とする。
うまくいかない時がある。原因不明
cd build/knowledge
docker build -t knowledge:1.6.0 .
残りの作業は全て、docker-compose.ymlファイルが置かれているディレクトリで行う。
全部立ち上げたい時
docker-compose up -d
gitbucketだけ立ち上げたい時
docker-compose up -d gitbucket
nginx-proxyとwordpressだけ立ち上げたい時
docker-compose up -d nginx-proxy wordpress
- build/
- サービスごとのDockerfileなどが格納されている。
- それぞれのサブディレクトリの中でdocker buildすればよい。
- data/
- 各サービスがデータ格納用に使う。(自動生成されるので最初は存在しない)
- 基本的にはサービスごとにData Volume Containerを作って、マウントしている。
- data/全体をバックアップすればいい。
nginx-proxyでは、/etc/nginx/conf.d/default.conf (およびmy-proxy.conf)で基本的な設定がなされている(このファイルやディレクトリはマウントされていない)。個別のvirtual hostに対して設定したい場合は、data/nginx-proxy/vhost.d/の下に設定ファイルを置けばよい。そうすることによって、/etc/nginx/conf.d/default.confの中の一部が変更される(またはincludeされる)。例えばhostA.example.comというvirtual hostの場合を書く。
このファイルの中身は、/etc/nginx/conf.d/default.conf内のhostA.example.comに関する情報の、locationディレクティブ内にincludeで展開される。つまり、locationディレクティブの中に書く内容だけを直接記述すれば良い。例えば、
satisfy any;
allow 192.168.0.0/16;
deny all;
auth\_basic "basic authentication";
auth\_basic\_user\_file /etc/nginx/htpasswd/SOMEFILE
と書くと、hostA.example.comに対して192.168.0.0/16からアクセスされたときは素通り、それ以外のIPからアクセスされたときは、Basic認証がかかる。なおその際の認証情報は、/etc/nginx/htpasswd/SOMEFILEに格納されるが、これはdata/nginx-proxy/htpasswd/ にマウントされているので、そこでhtpasswdを使ってパスワードファイルを作れば良い(containerに入る必要なし)。
このファイルはhtpasswdで作成されたパスワードファイルでなければならない。data/nginx-proxy/htpasswd/の下にvirtual host名と同名のファイルを置いた場合、そのホスト名でのアクセスにはすべてBasic認証が適用される。
したがって、前項でauth\_basic\_user\_file /etc/nginx/htpasswd/SOMEFILE
という記述をしていたが、このSOMEFILEをhostA.example.comというホスト名と同名nファイルにしてしまうと、全部にBasic認証がかかってしまい、意図しない動作となる。
https://github.com/jwilder/nginx-proxy
- Ubuntuを使っていると、NetworkManagerがdns-masqを勝手に起動しているため、dnsサーバ(bind9)を立ち上げようとするとport 53/udpがAddress already in useになって起動できない。
- dns-masqが立ち上がらないようにすれば良い。(/etc/NetworkManager/NetworkManager.confの
dns=dnsmasq
の行をコメントアウト) - http://www.lighthouse-w5.com/index.php/25-linux/62-ubuntu-dnsmasq.html
- gitbucketでsshを使うときは、必ずurlの指定をssh://user@host/group/repo.gitの形で指定しなければならない。.ssh/configでショートカット名を設定していても、ssh://user@host/の形を必ず守ること!
- そうしないと、git-receive-packやgit-upload-packのエラーが出てしまう。