もがき系プログラマの日常

もがき系エンジニアの勉強したこと、日常のこと、気になっている技術、備忘録などを紹介するブログです。

docker-compose使ってローカル環境作った

こんばんは。

何番煎じだよって話だけど、勉強したので残しときます。

はじめに

今お世話になっている職場ではローカル開発環境がなく、サーバーにvhosts切って開発環境を作っています。

それはそれでいいのですが、新しい人(とくにデザイナーさん)が入ってきたときは、環境構築にすごく手間取っている印象でした(インフラ強い人がいないのが原因なのかも)

docker入れてコマンド一発ってとこまで持っていきたいので、入れてみました。

やってみた

↑の企業様の現在運用中のサービスは年代物で、だいぶ昔から蓄積されたデータがテストDBにも膨大に入っています。

かつ、昔に作られて、いらないっぽいけど呼び出されている、でも使われてない、みたいな意味不明のデータも大量にあるので、スキーマだけ持ってきてローカルにDB構築しても確実に動きません。

ということで、まず事前準備としてテストのRDSをパブリックアクセス許可にして、IP制限で接続できるようにしました。

あとは、httpd+php+memcacheというよくある構成です。

※ パスの設定はサービスに寄せてます。

まずdocker-compose.yml作成します。

version: '3'

services:
  web:
    container_name: application_container
    build: ./web
    ports:
      - '5260:80'
    volumes:
      - ../:/var/www/project
    links:
      - kvs
  kvs:
    container_name: kvs_container
    image: memcached

次にweb用のDockerfileを作成します。

FROM centos:centos7
MAINTAINER kojirock
RUN yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
RUN yum -y update
RUN yum clean all
RUN yum install -y --enablerepo=remi-php56 httpd php php-mbstring php-pdo php-gd php-mysql php-xml php-intl php-pecl-memcached php-pecl-xdebug php-pecl-xhprof wget
RUN echo "ServerName localhost" >> /etc/httpd/conf/httpd.conf
RUN cp -p /usr/share/zoneinfo/Japan /etc/localtime
COPY vhosts.conf /etc/httpd/conf.d/
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

virtualhostの設定ファイルも置いときます。

<VirtualHost *:80>
    DocumentRoot "/var/www/project/app/webroot"
    ErrorLog "/var/log/httpd/application_error.log"
    Options Indexes FollowSymLinks

    SetEnv ENVIRONMENT local

    <Directory "/var/www/project">
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

あとは、以下のコマンドでビルドして立ち上げるだけです。

$ docker-compose build && docker-compose up -d

f:id:kojirooooocks:20180506014035p:plain

出来ました。

あとは環境変数送ってるから、アプリケーション側でローカルの動きをするように設定ファイルを読み替えてあげれば完了です。

おわりに

docker本格的に触ったのって初めてでした。

まぁ本格的ってほどガッツリ触っていないですが・・・

laradockとかで作ったりはしてましたが、やっぱお手軽ツール触るだけでなく、キチンと触らないとダメですね。

あと、意外に便利だなと思ったのは、kitematicでした。

f:id:kojirooooocks:20180506014420p:plain

起動中のコンテナとかパット見で見れるのいいなと。

とりあえずRDS以外はローカル環境構築できたので、あとは使用中のテストDBの最適化を済ませてDBもローカルに持つようにしたいなと思います。

とりあえずこんな感じです。 dockerもっと勉強しよ。

お疲れ様でした。