Running TPA in a Docker container

使用可能なTPA packagesがないシステムを使用しており、

Installing from source の後にTPAを実行するのが難しい場合(たとえば、動作するPython

3.6+インタープリターを取得するのが簡単でないため)、最後の手段はDockerイメージをビルドすることですDockerコンテナ内でTPAを実行します。

deploy to Docker containers を実行するためにDockerコンテナでTPAを実行する必要はないことに注意してください。可能であれば(MacOS

Xでも)TPAを直接実行することをお勧めします。

クイックスタート

Dockerがシステムにインストールされ、動作している必要があります。

次のコマンドを実行して、Githubからtpaexecソースリポジトリのクローンを作成し、 tpa/tpaexec という名前の新しいDockerイメージをビルドします。

$ git clone ssh://git@github.com/EnterpriseDB/tpaexec.git
$ cd tpaexec
$ 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 for Mac” とDockerを起動できます。