[AWS] DockerでDynamoDB Localの公式イメージを使用する

ヨメレバCSS
オリジナルCSS

 少し前に、DynamoDB LocakのDockerイメージがAWS公式からリリースされていました。

スポンサーリンク
GoogleAdSence レクタングル(大)

イメージを使用する

 Docker Hubでのイメージは次のものになります。

 ひとまずこれをDockerで起動してみます。

$ docker run -p 8000:8000 amazon/dynamodb-local

 無事起動すれば、8000ポートでdynamodb localに接続できるようになります。

$ docker run -p 8000:8000 amazon/dynamodb-local
Unable to find image 'amazon/dynamodb-local:latest' locally
latest: Pulling from amazon/dynamodb-local
638b75f800bf: Pull complete
106d4bcae1bb: Pull complete
4fda29486f95: Pull complete
Digest: sha256:705acedfeeed8d98781475cecacdfac574969642db4ad0856a49907a44d63c70
Status: Downloaded newer image for amazon/dynamodb-local:latest
Initializing DynamoDB Local with the following configuration:
Port:   8000
InMemory:       true
DbPath: null
SharedDb:       false
shouldDelayTransientStatuses:   false
CorsParams:     *

docker-composeで利用する

 これを指定したdocker-composeを作成します。

version: '3.3'

services:
  dynamodblocal:
    image: amazon/dynamodb-local
    networks:
      - default
    ports:
      - 8000:8000

 こちらを実行すると、先ほどと同じように8000で起動します。

$ docker-compose.exe up
Creating network "dynamodb_default" with the default driver
Creating dynamodb_dynamodblocal_1 ... done
Attaching to dynamodb_dynamodblocal_1
dynamodblocal_1  | Initializing DynamoDB Local with the following configuration:
dynamodblocal_1  | Port:        8000
dynamodblocal_1  | InMemory:    true
dynamodblocal_1  | DbPath:      null
dynamodblocal_1  | SharedDb:    false
dynamodblocal_1  | shouldDelayTransientStatuses:        false
dynamodblocal_1  | CorsParams:  *

docker-comopseのネットワークにDynamoDB Adminを追加する

 このままだと確認することも不便なので、DynamoDB Adminも一緒に入れてみます。

version: '3.3'

services:
  dynamodblocal:
    image: amazon/dynamodb-local
    networks:
      - default
    ports:
      - 8000:8000
      
  dynamodbadmin:
    image: instructure/dynamo-local-admin
    networks:
      - default
    ports:
      - 8001:8001
    environment:
      DYNAMO_ENDPOINT: http://dynamodblocal:8000/

 docker-compose upすると、docker-compose.ymlのdynamodb localに接続したdynamodb adminが起動します!

 dynamodb adminのコンテナは環境変数「DYNAMO_ENDPOINT」で接続先のdynamodbを指定します。このときdocker-composeのネットワークが同一で、内部のdymaodblocalを指定することができるため、外部への公開ポートと関係なくdynamodbadminを起動することができます。

version: '3.3'

services:
  dynamodblocal:
    image: amazon/dynamodb-local
    networks:
      - default

  dynamodbadmin:
    image: instructure/dynamo-local-admin
    networks:
      - default
    ports:
      - 8001:8001
    environment:
      DYNAMO_ENDPOINT: http://dynamodblocal:8000/

 dynamodblocalのほうからポート設定を消しても、adminは使用できます。

 つまり外部公開のポートを変更すれば、複数のdokcer-composeディレクトリで別々のdynamodbadminを起動して使用することも出来るようになります。

 例えば別のディレクトリに、次のようにdocker-comose.ymlを作成して

version: '3.3'

services:
  dynamodblocal:
    image: amazon/dynamodb-local
    networks:
      - default

  dynamodbadmin:
    image: instructure/dynamo-local-admin
    networks:
      - default
    ports:
      - 8011:8001
    environment:
      DYNAMO_ENDPOINT: http://dynamodblocal:8000/

ポート8001と8011でそれぞれ別の環境としてアクセスできるようになります。

 開発環境として平行起動して使い分けることはままあるので、ポートだけで別にできるのは助かります。

スポンサーリンク
GoogleAdSence レクタングル(大)