Running TPA in a Docker container
=================================

利用可能な :ref:`TPAパッケージのインストール <TPAパッケージのインストール>` がなく、 :ref:`ソースからのビルドとインストール <ソースからのビルドとインストール>` の後にTPAを実行することが難しい場合たとえば、動作するPython
3.9以降のインタープリターを入手するのは簡単ではないため、最後の手段はDockerをビルドすることですイメージを作成し、Dockerコンテナ内でTPAを実行します。

DockerコンテナでTPAを実行して :ref:`deploy to Docker containers <Docker>`  する必要はありません。 MacOS
Xでも、可能であればTPAを直接実行することをお勧めします。

クイックスタート
----------------

システムにDockerがインストールされ、動作していることを確認します。

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

.. code:: bash

   $ git clone ssh://git@github.com/EnterpriseDB/tpa.git
   $ cd tpa
   $ docker build -t tpa/tpaexec .

作成したイメージをダブルチェックします。

.. code:: bash

   $ 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コンテナを作成し、コンテナ内でクラスター構成ディレクトリを利用できるようにします。

.. code:: bash

   $ 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のインストール
--------------------

 `installing Docker <https://docs.docker.com/install>`_ および `getting started <https://docs.docker.com/get-started/>`_ のヘルプが必要な場合は、
 `Docker documentation <https://docs.docker.com>`_ を参照してください。

MacOS Xでは、次のことができます `install Docker Desktop for Mac <https://hub.docker.com/editions/community/docker-ce-desktop-mac/>`_ 

そして、アプリケーションメニューからDockerを起動します。
