LoginSignup
11
16

More than 5 years have passed since last update.

AWSライクな開発環境をDockerで構成してみた件

Last updated at Posted at 2016-12-20
1 / 16

AWSって便利ですよね、Elastic BeansTalkを使えば環境構築がすぐに終わり
DBもキャッシュサーバもロードバランサも構築されます。
(EBは関係ないですが必然的にS3も使うことでしょう)


今日の弊社の開発環境


  • 開発はローカルサーバ(Docker or Vagrant)
  • ステージングは共用のステージング専用サーバ
  • プロダクションはAWS

ローカル、ステージングをAWSの外に置くことにより開発時のランニングコストを押さえています。
しかし、S3だけは常にAWSを利用していました。


問題点


ローカルサーバはDBも開発者それぞれ、
しかし、S3のバケットは共用なため
他の人にファイルを上書きされたり
勝手に消されたりしてしまう懸念があります。


そこで(本題)


AWSライクな開発環境をDockerで構築した件


レシピ

version: "2.0"
services:
  lb:
    image: nginx
    ports:
      - 10081:80
    volumes:
      - ./nginx:/etc/nginx/conf.d
    links:
      - web1
      - web2
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    links:
      - db
    ports:
      - 10082:80
    environment:
      PMA_HOST: hoge
      PMA_USER: hoge
      PMA_PASSWORD: hoge
  web1:
    build: ./
    links:
      - db
      - redis
      - maildev
    volumes:
      - ./:/var/www
  web2:
    build: ./
    links:
      - db
      - redis
      - maildev
    volumes:
      - ./:/var/www

  db:
    image: mariadb
    environment:
      MYSQL_ROOT_PASSWORD: hoge
      MYSQL_DATABASE: hoge
      MYSQL_USER: hoge
      MYSQL_PASSWORD: hoge
  redis:
    image: redis
  maildev:
    image: djfarrelly/maildev
    ports:
      - 10084:80
  minio:
    image: minio/minio
    ports:
      - "10085:9000"
    volumes:
      - "./storage/files:/export"
    environment:
      MINIO_ACCESS_KEY: AKIAIOSFODNN7EXAMPLE
      MINIO_SECRET_KEY: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
    command: server /export

なにをしているのか


lbコンテナ

ロードバランシングをしてもらっています。
Elastic Loadbarancingの代わりです。

nginx.conf
upstream web {
    server web1;
    server web2;
}

server {
    listen 80;
    location / {
           proxy_pass http://web;
    }
}

web1,web2コンテナ

EC2の代わりのウェブサーバです。
build先のDockerfileはPHP7-apacheに
redisエクステンションを組み込んだものになってますので
各自自由に構築してください


db

RDSの代わりです。MariaDBを採用

redis

ElasticCacheのかわりです


minio

S3の代わりです。
詳しく設定を加えたことがないんですが
読み書きだけなら
environmentを設定するだけでいけたので採用しました!


おまけ

phpmyadmin コンテナ
MariaDBの確認用においておきました。

maildev コンテナ
メール確認用に、maildevをSMTP先に設定すれば
外部にメールがとぶことはありません


総括

これで、よく使うAWSのサービスをローカルで再現して開発ができ・・・るはずです!

イニシャルコストを払わずに開発を開始できるため、フリーランスやスタートアップにぴったりだと思います!

11
16
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
11
16