Dockerを動かしてみようのメモ

docker-studyというディレクトリを作成&移動

mkdir docker-study && cd docker-study


docker-study直下に、srcとlaravelディレクトリを作成

mkdir src laravel


/docker-studyに、コマンドを実行するシェルスプリクトを作成する

/docker-study/install.sh
docker run -v `pwd`/src:/src composer create-project --prefer-dist laravel/laravel /src/$1
laravel/Dockerfile
FROM php:7.2-apache

RUN set -x && \
  apt-get -y update && \
  apt-get install -y libicu-dev wget unzip libpq-dev libsqlite3-dev libbz2-dev && \
  NPROC=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1) && \
  docker-php-ext-install -j${NPROC} intl pdo_pgsql pdo_mysql pdo_sqlite pcntl && \
  rm -rf /tmp/pear

RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf

WORKDIR /var/www


/docker-studyに、コマンドを実行するシェルスプリクトを作成する

/docker-study/install.sh
docker run -v `pwd`/src:/src composer create-project --prefer-dist laravel/laravel /src/$1

install.shを実行

(chmod +x でinstall.shに実行権限を与えて実行している)

chmod +x install.sh && ./install.sh studylaravel

この時実行されるコマンドは、コンポーザーというイメージから、
コンテナを起動し、ホストマシンの/docker-study/srcにコンテナ内の/srcをマウントして、
Laravelの新規プロジェクトを作成している。

/docker-study/docker-compose.yml
version: '3.1'
services:
  web:
    build:
      context: ./laravel # ビルドに必要なファイルが格納されているディレクトリ(dockerfileのある場所?)
    volumes:
      - ./src:/var/www  # ./src以下(ホスト):/var/www(コンテナ) マウントする
    environment: # 環境変数を追加
      APACHE_DOCUMENT_ROOT: /var/www/${PROJECT_NAME}/public # .envのPROJECT_NAME
    ports: # 公開用のポート( [ホスト側]:[コンテナ側] )
      - "8080:80”
    depends_on:
      - db
    tty: true
    stdin_open: true
  db:
    image: mysql
    ports:
      - "5433:5432"
    environment:
      MYSQL_ROOT_PASSWORD: dbpass
      MYSQL_DATABASE: laravel_test_db
/docker-study/.env
PROJECT_NAME=mylaravel

docker-compose.ymlで参照する${PROJECT_NAME}の部分

ビルドを実行
docker-compose build

この時実行されるコマンドは、docker-compose.ymlファイルに従って、
コンテナを複数ビルドしている
※docker-composeというコマンドがでてきたが、Docker ComposeはDockerが開発するコマンドラインツールで、あらかじめ用意しておいた設定ファイルに従ってコンテナを起動するツール

ビルドしたコンテナを起動する
docker-compose up -d