1
1

More than 3 years have passed since last update.

Minioとamazon/dynamodb-localでlocal-stackをつかわない様に環境を作成する

Last updated at Posted at 2021-02-20
概要

Lambdaを利用する時に、S3とdynamo-dbの利用環境は多く、開発でlocal実装をする。

経緯

上記の環境を作成するために、Local-Stackを利用することを考えたがやれることが多く、他の人の学習コストが積む気配があったので、minio(S3の代用)、Dynamodb、Dynamodb-adminを利用してLocalの環境を作成することにした。LambdaまでDockerniseしようとしたが、sam-cliが便利でぬけなかったのと、sam-cliが内部でDockerniseしているためとりあえずあきらめたwwww

TL;DR

すべてdocker-composeに記載してネットワークのHOSTだけ気をつければ普通に動く。
Environmentにまとめておくと楽なので、.envをdocker環境だけ利用する

レポ

利用するDockerImage

name url desc
minio https://hub.docker.com/r/minio/minio S3の代用手段
dynamodb-local https://hub.docker.com/r/amazon/dynamodb-local AWSが提供してくれてるdynamo-dbのLocal環境
dynamodb-admin https://hub.docker.com/r/aaronshaf/dynamodb-admin dynamo-dbのGUIツール地味にあると嬉しいphpのadmin的なあれ

outline

  1. minioの設定を追加
  2. dynamodb-localの設定を追加
  3. dynamodb-adminの設定を追加

1. minioの設定を追加

S3の代用となるminioを追加。立ち上がったらGUIで確認できます。

docker-compose.yml
version: "3.8"
services:
  s3-local-on-minio:
    image: minio/minio
    container_name: s3-local
    ports:
      - "9001:9000"
    command: ["--compat", "server", "/data"]
    restart: always
    env_file:
      - .env
    environment:
      MINIO_ACCESS_KEY: "${AWS_ACCESS_KEY_ID}"
      MINIO_SECRET_KEY: "${AWS_SECRET_ACCESS_KEY}"
      AWS_ACCESS_KEY: "${AWS_ACCESS_KEY_ID}"
      AWS_ACCESS_KEY_ID: "${AWS_ACCESS_KEY_ID}"
      AWS_SECRET_ACCESS_KEY: "${AWS_SECRET_ACCESS_KEY}"
      AWS_DEFAULT_REGION: "${AWS_DEFAULT_REGION}"
      AWS_S3_ENDPOINT_URL: "${AWS_S3_ENDPOINT_URL}"
      AWS_S3_BUCKET_NAME: "${AWS_S3_BUCKET_NAME}"

environmentで利用した情報を作成します。
Keyとかシークレットがかぶっているのは、面倒だったためてを抜きました。(ちゃんと設定してあげてください)

AWS_ACCESS_KEY_ID=dummy_s3_access_key
AWS_SECRET_ACCESS_KEY=dummy_s3_secret_key
AWS_DEFAULT_REGION=us-east-1

AWS_S3_ENDPOINT_URL=http://host.docker.internal:9001/
AWS_S3_BUCKET_NAME=sample

正常に起動できると下記の様なものが見れます。
(localhost:9001)[http://localhost:9001/minio/login]

MinIO-Browser.png

2. dynamodb-localの設定を追加

Amazonが提供してくれている dynamodb-localを入れていきます。

docker-compose.yml
version: "3.8"
services:
  ## ここから追記
  dynamodb-local:
    image: amazon/dynamodb-local
    container_name: dynamodb-local
    ports:
      - "8000:8000"
  ## ここまで追記
  s3-local-on-minio:
    image: minio/minio
    container_name: s3-local
    ports:
      - "9001:9000"
    command: ["--compat", "server", "/data"]
    restart: always
    env_file:
      - .env
    environment:
      MINIO_ACCESS_KEY: "${AWS_ACCESS_KEY_ID}"
      MINIO_SECRET_KEY: "${AWS_SECRET_ACCESS_KEY}"
      AWS_ACCESS_KEY: "${AWS_ACCESS_KEY_ID}"
      AWS_ACCESS_KEY_ID: "${AWS_ACCESS_KEY_ID}"
      AWS_SECRET_ACCESS_KEY: "${AWS_SECRET_ACCESS_KEY}"
      AWS_DEFAULT_REGION: "${AWS_DEFAULT_REGION}"
      AWS_S3_ENDPOINT_URL: "${AWS_S3_ENDPOINT_URL}"
      AWS_S3_BUCKET_NAME: "${AWS_S3_BUCKET_NAME}"

dynamodb-adminをかいてから起動した方が個人的に楽なので、そのままadminを記載していきます。

3. dynamodb-adminの設定を追加

docker-compose.yml
version: "3.8"
services:
  dynamodb-local:
    image: amazon/dynamodb-local
    container_name: dynamodb-local
    ports:
      - "8000:8000"
  s3-local-on-minio:
    image: minio/minio
    container_name: s3-local
    ports:
      - "9001:9000"
    command: ["--compat", "server", "/data"]
    restart: always
    env_file:
      - .env
    environment:
      MINIO_ACCESS_KEY: "${AWS_ACCESS_KEY_ID}"
      MINIO_SECRET_KEY: "${AWS_SECRET_ACCESS_KEY}"
      AWS_ACCESS_KEY: "${AWS_ACCESS_KEY_ID}"
      AWS_ACCESS_KEY_ID: "${AWS_ACCESS_KEY_ID}"
      AWS_SECRET_ACCESS_KEY: "${AWS_SECRET_ACCESS_KEY}"
      AWS_DEFAULT_REGION: "${AWS_DEFAULT_REGION}"
      AWS_S3_ENDPOINT_URL: "${AWS_S3_ENDPOINT_URL}"
      AWS_S3_BUCKET_NAME: "${AWS_S3_BUCKET_NAME}"
  ## ここから追記
  dynamodb-admin:
    container_name: dynamodb-admin
    image: aaronshaf/dynamodb-admin:latest
    env_file:
      - .env
    environment:
      DYNAMO_ENDPOINT: "${AWS_DYNAMO_DB_URL}"
    ports:
      - 8001:8001
    depends_on:
      - dynamodb-local
  ## ここまで追記

追加で記載したenvの情報も追記

AWS_ACCESS_KEY_ID=dummy_s3_access_key
AWS_SECRET_ACCESS_KEY=dummy_s3_secret_key
AWS_DEFAULT_REGION=us-east-1

AWS_S3_ENDPOINT_URL=http://host.docker.internal:9001/
AWS_S3_BUCKET_NAME=sample

## ここから追記
AWS_DYNAMO_DB_URL=http://host.docker.internal:8000/
AWS_DYNAMO_DB_TABLE=Sample

通信については、host.docker.internalを利用してdockerのcontainer間通信をしてもらいます。(localhostだと動かなかった)

以上を書き終えてdockerを起動します。

$ docker-compose up

成功すると。
localhost:9001にminioと、
localhost:8001にdynamodb-adminが表示されます。

minio
MinIO-Browser.png

dyanmodb-admin
DynamoDB-Admin.png

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1