Dockerを使ってのGitLab試行では割と簡単にデプロイできたし、かなり有望な感じがするわけですが、やっぱり個人的にはロゴの目力が痛いわけです。
そんな中、Gitlabのロゴを差し替える という記事を発見。
DockerならばDockerfileを作ればわかりやすくカスタムイメージ作れんじゃないか、みたいに思って書いてみたのでメモ。
今回の画像、Dockerfileなどは以下に置いてあります。
https://github.com/yacchin1205/docker-gitlab-customlogo
#描く
まずは描きます。オリジナルは、
なんですけど、https://about.gitlab.com/about/ にSmart animalって文言が見えたので、ああ、ケモミミだな・・・と。
サイズ合わせて、こんな感じに。
別に疲れてないです。
##ファイルの準備
描いた絵をもとに、以下のファイルを作ります。
- brand_logo.png
- logo-black.png
- logo-white.png
- favicon.ico
サイズ、背景の透過などはリポジトリなど参照。
ツールは、お絵かきはSAI、画像加工はFireworksを使ってます。
#ビルドと実行
GitLabイメージ sameersbn/gitlab
に対して、画像ファイルだけ差し替えるようなDockerfileを書きました。
使用方法はこんな感じ。
git clone https://github.com/yacchin1205/docker-gitlab-customlogo.git
cd docker-gitlab-customlogo/
docker build -t docker-gitlab-customlogo .
あとは、sameersbn/gitlab
の代わりに、イメージ docker-gitlab-customlogo
を指定してGitLabコンテナを起動すればよい。
##コマンド一発でコンテナ起動
先の記事の通り、
docker run --name='gitlab' -it --rm \
-e 'GITLAB_PORT=10080' -e 'GITLAB_SSH_PORT=10022' \
-p 10022:22 -p 10080:80 \
-v /var/run/docker.sock:/run/docker.sock \
-v $(which docker):/bin/docker \
docker-gitlab-customlogo
で、 http://(Dockerホストのアドレス):10080
をブラウザで開く。
うむ・・・!
##コンテナを1つ1つ起動
こちらも先の記事と同じ要領。
docker run --name gitlab-redis -d sameersbn/redis:latest
docker run --name gitlab-mysql -d -e 'DB_NAME=gitlabhq_production' -e 'DB_USER=gitlab' -e 'DB_PASS=password' -v /vagrant/gitlab/mysql:/var/lib/mysql sameersbn/mysql:latest
docker run -d -p 10080:80 -e 'GITLAB_PORT=10080' -e 'GITLAB_HOST=192.168.33.10' -v /vagrant/gitlab/git:/home/git/data --link gitlab-mysql:mysql --link gitlab-redis:redisio docker-gitlab-customlogo
なお、上記コマンドですでに一度起動したことがある場合、 /vagrant/gitlab/git
ディレクトリ配下に tmp
ディレクトリが作成され、そこに画像ファイルがコピーされている場合があります。
(tmp/public/assets/brand_logo-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.png
など)
この場合、以前起動した際のロゴ画像ファイルが利用されてしまうようですが、tmp
をリネームなどして再度コンテナ起動をすると、新たな画像ファイルを用いて tmp
ディレクトリを作ってくれるよう。
##余談: Dockerfileの作り
Dockerfileはごくごくシンプルなのですが、今回気にしてみたのは、以下の部分。
RUN test -e /home/git/gitlab/app/assets/images/brand_logo.png && \
test -e /home/git/gitlab/app/assets/images/logo-white.png && \
test -e /home/git/gitlab/app/assets/images/logo-black.png && \
test -e /home/git/gitlab/app/assets/images/favicon.ico
ベースにしているイメージは逐一アップデートされていくので、リソースに関するパスなどはいつまで同じかわかりません。こういう状況では、一見ビルドできているけど実は反映されてません みたいなことが簡単に発生しうるなと。
そこで、DockerfileでチェックするコードをRUNしておけば、とりあえず期待するファイルがベースイメージ中に存在するかどうかくらいはチェックできるかなあ、と。
これで目力に負けることなく動作検証できます。