Running TPA in a Docker container#
利用可能な TPA installation がなく、 Installing TPA from source の後にTPAを実行することが難しい場合たとえば、動作するPython 3.12以降のインタープリターを入手するのは簡単ではないため、最後の手段はDockerイメージをビルドすることですそして、Dockerコンテナ内でTPAを実行します。
Dockerのインストール を行うためにDockerコンテナでTPAを実行する必要はないことに注意してください。可能であれば、MacOS XでもTPAを直接実行することをお勧めします。
クイックスタート#
システムにDockerをインストールして動作している必要があります。
次のコマンドを実行して、Githubからtpaexecソースリポジトリのクローンを作成し、tpa/tpaexec
という名前の新しいDockerイメージをビルドします。
$ git clone ssh://git@github.com/EnterpriseDB/tpa.git
$ cd tpa/docker
$ docker build -t tpa/tpaexec .
作成したイメージをダブルチェックします。
$ docker image ls tpa/tpaexec
REPOSITORY TAG IMAGE ID CREATED SIZE
tpa/tpaexec latest e145cf8276fb 8 seconds ago 1.73GB
$ docker run --platform=linux/amd64 --rm tpa/tpaexec tpaexec info
# TPAexec v20.11-59-g85a62fe3 (branch: master)
tpaexec=/usr/local/bin/tpaexec
TPA_DIR=/opt/EDB/TPA
PYTHON=/opt/EDB/TPA/tpa-venv/bin/python3 (v3.7.3, venv)
TPA_VENV=/opt/EDB/TPA/tpa-venv
ANSIBLE=/opt/EDB/TPA/tpa-venv/bin/ansible (v2.8.15)
TPAコンテナを作成し、コンテナ内でクラスター構成ディレクトリを利用できるようにします。
$ docker run --platform=linux/amd64 --rm -v ~/clusters:/clusters \
-it tpa/tpaexec:latest
コンテナプロンプトでtpaexec provision /clusters/speedy
のようなコマンドを実行できるようになりました。シェルを終了すると、コンテナが削除されます。
TPAを使用してDockerコンテナをプロビジョニングする場合、コンテナがホスト上のDocker制御ソケットにアクセスすることも許可する必要があります。
$ docker run --platform=linux/amd64 --rm -v ~/clusters:/clusters \
-v /var/run/docker.sock:/var/run/docker.sock \
-it tpa/tpaexec:latest
コンテナ内でdocker ps
を実行して、ホストDockerデーモンへの接続が機能していることを確認します。
Dockerのインストール#
install Docker および get started のヘルプが必要な場合は、 Docker documentation を参照してください。
MacOS Xでは、次のことができます install "Docker Desktop forMac"
そして、アプリケーションメニューからDockerを起動します。