Redmine+NGINXをDocker上で動かす
仕事で久々にRedmineを構築することになったので、せっかくなのでDocker上で動かすことにしました。
RedmineってRuby on Railsで動いているのでmigrationとかが走るので面倒ですが、なんとかできたのでその記録としてまとめます。
環境
Ubuntu Server 19.04
Docker18.09.1
docker-compose 1.25.0
1. RedmineのDockerイメージ作成
まず、RedmineのDockerイメージを作成します。
基本的にはRedmine公式のDockerイメージを使用しますが、今回はほかのシステムとの共存が必要なのでサブディレクトリ対応する必要があります。
カスタムRedmineのDockerfileとして以下のDockerfileを作成します。
config.ruの内容は後で触れますので、取り合えずこのファイルを追加するのだなと思っておいてください。
config.ru以外は何もないので、ほとんど公式イメージと同じですね(笑)
FROM redmine:4.0.5-alpine COPY --chown=redmine:redmine config.ru config.ru
2. config.ruの作成
では、カスタムRedmineの肝となるconfig.ruを記載します。
基本的にRedmineのIssueに記載されている内容通りに作れば問題ありません。
これでサブディレクトリがある場合/ない場合両方に対応したイメージが作成できます。
どうしてか公式のイメージには含まれていないんですよね~。
3. リバースプロキシ設定を作成
NGINXに読み込ませるリバースプロキシの設定を作成します。 ここで設定するサブディレクトリとこの後で設定する環境変数を合わせないと動作しないので注意が必要です。
upstream redmine_back { server redmine:3000; } server { location /redmine/ { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-Host $host; proxy_pass http://redmine_back/redmine/; proxy_redirect default; } }
ここの細かな設定は説明しませんが、リバースプロキシを設定する場合はこれらproxy_set_header
を設定しておくと無難です。
4. docker-compose.ymlを作成する
最後にcomposeの設定を作成します。
重要なのはredmineの環境変数にRAILS_RELATIVE_URL_ROOTを入れることとweb-proxyサービスのvolumesで作成したdefault.confを参照することです。
環境変数 RAILS_RELATIVE_URL_ROOTでサブディレクトリを指定します。
また、web-proxyのdefault.confは既存で存在しますが、上書きするのがよいです。
version: '3' services: redmine: build: context: ./redmine dockerfile: Dockerfile environment: RAILS_RELATIVE_URL_ROOT: '/redmine' web-proxy: image: nginx:1.17-alpine volumes: - ./web-proxy/default.conf:/etc/nginx/conf.d/default.conf links: - redmine ports: - 80:80
5. 実行
最後にdocker-composeを使用して実行します。
今回はRDBMSがないのでSQLite3で動作しますが、本番環境ではpostgreSQLやmySQLなどにする必要があります(mySQLは相性が良くないようなので、postgreSQLがよいでしょう)。
最後に
久々のRedmine構築で調べまくりでしたが、意外と変更箇所が少なくてよかったです。
ただ、Dockerで動かすのはどこのサイトを見てもpassengerを使っているので軽量なalpineの情報がないのはつらかったですが。。。
今回のソースコードは以下のGistにまとまっていますので、よろしかったら参照してみてください。
CentOS7でDocker環境構築
毎月ブログを書こうと決心して始めましたが、少し間が開いてしまいました。
今回は会社で技術ブログを作ろうということになったので、手軽に環境の改変ができるDockerを使った内容を書きます。
とりあえず、今回はDockerのインストールについて(といっても、ドキュメントの通りですが..)。
構築環境前提条件
CentOS 7
Docker 1.06.0-ce
Dockerのインストール
Dockerのインストールはドキュメントに書かれている手順で行います。
Dockerインストールドキュメントはこちらを参照https://docs.docker.com/engine/installation/linux/docker-ce/centos/
セットアップに必要なパッケージをインストール
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
Dockerのリポジトリを追加する
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yumのパッケージを更新する
$ sudo yum makecache fast
Dockerコミュニティエディションのインストール
$ sudo yum install docker-ce
Dockerの起動
$ sudo systemctl start docker
Dockerのサービス有効化
$ sudo systemctl enable docker
Dockerの動作確認
$ sudo docker run hello-world
hello-worldが表示されればOK
プログラミングXamarinが届きました!!
待ちに待ったプログラミングXamarinがようやく届きました。
まだ、届いたばかりで開いてもいませんがかなりの厚さです。
原書は無料で配布されていたものですが、なにぶん英語はよわいので本格的に理解しようとなるとJXUGか日本語の書籍に頼るという有様。
しかし、やはり技術書は紙媒体に限りますね。
見ながらコードを書いたりするときに画面をとられずにすみますから。
ということで、Xamarinを理解するのならば、『プログラミングXamarin』はおすすめです。
プログラミングXamarin 上 Xamarin.FormsとC#によるクロスプラットフォームモバイルアプリ開発 (マイクロソフト公式解説書)
- 作者: Charles Petzold,榎本温、藤原雄介、猪股健太郎(監訳),クイープ
- 出版社/メーカー: 日経BP社
- 発売日: 2017/06/01
- メディア: 単行本
- この商品を含むブログを見る
Xamarin Studioを更新するとVisual Studio for Macが起動できない問題の解決方法
Xamarin StudioをインストールしたMacに Visual Studio for Macをインストールして両方を使用していました。
ところが、急にVisual Studioが使用できなくなったので、原因を調べてみました。
続きを読む