最近、私たちは自分たちのアプリをローカル環境でテストしたいと思いました。私たちのアプリは、Cassandra、Aerospike、Mysqlなどの様々なサービスを使用しています。 これらのサービスをローカルにセットアップするのは、各開発者にとって非常に時間がかかるため、これらのサービスをdockerで実行するようにセットアップしました。 この記事では、dockerでAerospikeをセットアップし、ユーザー定義関数でサーバーを初期化する方法を説明します。
まず、dockerリポジトリからcentosのイメージを引き出し、wgetを使ってtarファイルをインストールします(Aerospikeが使用するlogrotateも追加します)。
RUN yum -y install logrotate || exit $?
FROM centos
RUN yum -y install tar || exit $?
RUN yum -y install wget || exit $?
リポジトリからAerospikeをダウンロードしてインストールします。
ENV AEROSPIKE_VERSION=3.5.4
RUN wget “https://www.aerospike.com/artifacts/aerospike-server-community/${AEROSPIKE_VERSION}/aerospike-server-community-${AEROSPIKE_VERSION}-el6.tgz” -O aerospike.tgz || exit $?
RUN mkdir aerospike || exit $?
RUN tar xzf aerospike.tgz -strip-components=1 -C aerospike || exit $?
RUN cd aerospike && ./asinstall || exit $?
これで、Aerospikeがインストールされたdockerイメージができました。 また、ユーザー定義関数をdockerイメージに追加する必要があります。 次のコマンドは、UDFが入っているdockerイメージにuser-udfフォルダを追加します。
ADD user-udf user-udf
そして、Aerospikeのポートを公開し、他のdockerコンテナからアクセスできるようにします。
暴露 3000 3001 3002 3003
今回のケースでは、Aerospikeサーバーを起動し、ユーザー定義関数をインポートするスクリプトが必要です。 CMD "を使ってスクリプトの実行を設定することができます。
CMD datapipe-user-udf/bin/start.sh
以下は、start.shスクリプトの内容です。 このスクリプトはAerospikeをバックグラウンドで起動します。 そして、ユーザー定義関数をインポートします。
/usr/bin/asd -foreground &
スリープ5
/usr/bin/ascli udf-put user-udf/udf/didSet.lua || exit $?
/usr/bin/ascli udf-put user-udf/udf/gidSet.lua || exit $?
/usr/bin/ascli udf-put user-udf/udf/stidSet.lua || exit $?
待つ
以下のコマンドでAerospikeのDockerイメージをビルドします。
docker build -t aerospike <aerospike-docker-folder>
Run Aerospike。
docker run -t -p 3000:3000 aerospike
これでAerospikeサーバーが3000:3000ポートで起動しました(ローカルホストのポートをバインドします)。
Aerospikeには、tcpアドレスlocalhost:3000でアクセスできます。