はじめに
以前、職場でproxyの内側にOSSのGROWIインスタンスを立てる記事を投稿しました。
GROWI v7.5.0からgrowi-docker-composeの構成が変更されてproxy設定の方法が変わりましたので修正版を投稿いたします。GROWI以外の設定は同じですが記載しておきます。
環境は下記です。
# OS UbuntuServer 26.04LTS
# Docker version 29.5.2
# GROWI 7.5.5
# proxy設定 http://proxy.example.co.jp:12380(各自の環境による)
# docker composeでGROWIを立ち上げる方法とする
$ cd /
$ sudo git clone https://github.com/growilabs/growi-docker-compose.git growi
$ cd growi
$ sudo docker compose up -d
自分の職場はhttpとhttpsのproxyは共通でしたが、環境によるかも。
環境によってはユーザ名、パスワードも記述必要。
Ubuntu Server設定
aptのproxy設定
Ubuntu Server 26.04LTSの場合はISOからのインストール中にproxy設定を入力するステップがありますので、そこで入力します。
http://proxy.example.co.jp:12380
ここで入力したものは、/etc/apt/apt.conf.d/90curtin-aptproxyに反映されるのでaptの設定ファイルを触らずに済みます。インストール時に設定しなかった場合はあとで自分で設定して下さい。
$ sudo cat /etc/apt/apt.conf.d/90curtin-aptproxy
Acquire::http::Proxy "http://proxy.example.co.jp:12380";
Acquire::https::Proxy "http://proxy.example.co.jp:12380";
$
Ubuntuインストールの余談
UbuntuServer 26.04LTSをVirtualBoxで25GBのストレージにインストールしたところ、デフォルトだとアサインされないストレージ領域がたくさん残って、ファイルシステムが小さくてdocker composeでGROWIをダウンロードできませんでした。インストール時にストレージ設定を変えて余り領域をルートにアサインしておく方がいいです。(後からアサインできるけど)
bashのproxy設定
一般ユーザでsudo docker composeを実行する場合→ ~/.bashrc
sudo suでrootになってから実行する場合→ /root/.bashrc
の最後に環境変数として追記します。
export http_proxy="http://proxy.example.co.jp:12380"
export https_proxy=$http_proxy
一般ユーザでsudo実行する場合は、/etc/sudoers.d/proxyに下記を記述して環境変数が引き継がれるようにします。(docker engineのインストールやElasticsearchのイメージ作成などで引っかかります)
UbuntuServer 26.04LTSのsudoは24.04LTSでは使えていた-Eオプションで環境変数を引き継ぐことができなくなったようです。
$ sudo cat /etc/sudoers.d/proxy
Defaults env_keep = "http_proxy https_proxy"
~/.bashrcに設定した環境変数を現在のbashに反映するには下記を実行します。
$ source ~/.bashrc
gitのproxy設定
UbuntuServer 26.04LTSではgitが最初から入っています。コマンドラインでproxy設定します。
$ sudo git config --global http.proxy http://proxy.example.co.jp:12380
$ sudo git config --global https.proxy http://proxy.example.co.jp:12380
設定を確認するには
$ sudo git config --global --list
docker engineのインストール
apt, snapなどでインストールできるという記事もあるのですが、snapでインストールしてもうまく動かなかったので本家のインストール手順を踏むのが無難です。
動作確認でhello-worldを実行した場合、コンテナ・イメージなど残っているものを削除しておいた方がよいです。
dockerのproxy対応
$ sudo systemctl edit docker
で設定ファイルを編集し、3行目以降に下記2行を記入して閉じる。
[Service]
Environment = 'http_proxy=http://proxy.example.co.jp:12380' 'https_proxy=http://proxy.example.co.jp:12380'
dockerへ反映させるため、下記を実行
$ sudo systemctl stop docker
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
GROWIのproxy設定
GROWIのコンテナ内部からのproxyアクセスは、Elasticsearchがpluginをインストールする時に必要になります。v7.4.7まではElasticsearchのDockerfileに記入していたのですが、v7.5.0からそのDockerfileがなくなったため、composeファイルに設定します。
コンテナ内のElasticsearchにproxy設定を渡すためにはCLI_JAVA_OPTSという環境変数を利用します。
docker-compose.ymlファイルを開いて、elasticsearchのenvironment:というセクションに環境変数を追記します。
proxy以外のdocker-compose.ymlの修正は必要に応じて行って下さい。
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:9.3.3
# For Elasticsearch 8.x
# image: docker.elastic.co/elasticsearch/elasticsearch:8.19.14
environment:
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms256m -Xmx256m" # increase amount if you have enough memory
- LOG4J_FORMAT_MSG_NO_LOOKUPS=true # CVE-2021-44228 mitigation for Elasticsearch <= 6.8.20/7.16.0
- "CLI_JAVA_OPTS=-Dhttp.proxyHost=proxy.example.co.jp -Dhttp.proxyPort=12380 -Dhttps.proxyHost=proxy.example.co.jp -Dhttps.proxyPort=12380" # proxy設定
【参考】
Compose 内の環境変数 ? Docker-docs-ja 24.0 ドキュメント
Other command line parameters | Elasticsearch Reference
GROWI起動
以上のproxy設定を全部済ませればGROWIを起動できるはずです。
$ cd /opt/growi
$ sudo docker compose up -d
[補足]
dockerのproxy設定
参考記事
dockerの内部IPアドレス変更
実在するIPアドレスとdockerが使用する内部ネットワークのIPアドレスが被った場合は、/etc/docker/daemon.jsonというファイルを作成して変更できます。(ここではIT部門から指定された、他と被らないアドレスである10.123.0.0/16を使用するものとします)
まずはdockerを停止
# systemctl stop docker
/etc/docker/daemon.jsonファイルを作成
{
"default-address-pools":[
{
"base":"10.123.0.0./16",
"size":24
}
]
}
docker再起動
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
その他もろもろ
- docker composeコマンドを使う時は、docker-compose.ymlファイルの置かれたディレクトリで実行する(up, down, start, stopなどの操作の時)
- docker-compose.ymlファイルを編集する場合は $ sudo docker compose down でコンテナを停止・消去してから行う
- docker-compose.ymlファイルを修正してエラーが出たときは、YAMLチェッカーで文法チェックするとよい。例えば下記