DockerでLaravel開発環境の自動化
はじめに
本記事は動画( https://youtu.be/RYXtItghA14 )でも解説しています。
スライドを記事化したものです。動画と合わせて御覧ください。
※記事化する際に補足説明を加筆しており、内容は動画のスライドと異なります。
※本記事の内容は2020年3月時点の内容となります。OSやミドルウェア、Dockerのバージョンが異なることで記載通りの内容で完了しない場合があります。
Dockerfileで出来る事
- イメージのダウンロード
- コンテナイメージ内でのシェルコマンド実行
- ローカルファイルをコンテナイメージ内への転送
- 実行ユーザ切り替え
Dockerfileで出来ない事
- デーモン(サービス)の起動
- Webアプリ環境構築でのDBへの初期DB構築などは出来ない
Dokcerコマンド一覧
コマンド | 概要 |
---|---|
FROM | イメージを指定 |
LABEL | メタデータの設定 |
ENV | 環境変数を設定 |
RUN | コンテナ内でコマンドを実行 |
COPY | ファイル、ディレクトリをローカル→コンテナ、コンテナ→ローカルにコピーする |
ADD | ファイル、ディレクトリをローカル→コンテナに追加。.tarファイルをアンパックできる |
CMD | RUNのパラメータを設定。RUN実行後にクリアされる |
WORKDIR | 作業ディレクトリを指定 |
ARG | docker buildコマンド時の引数定義 |
ENTRYPOINT | コンテナにコマンドと引数を提供 |
SHELL | コンテナ内の実行シェルの指定と設定 |
USER | ユーザの切替 |
実行コマンド
docker build -t [イメージタグ] .
動画で使ったDockerfile
# centos7のイメージを利用する
FROM centos:7
LABEL maintainer=Takemi
SHELL ["/bin/bash", "-o", "pipefail", "-c"]"
# 累積アップデートの実行
RUN yum -y upgrade
#rootパスワード設定
RUN echo "root:docker123" | chpasswd;
#takemiユーザが存在していない場合ユーザ追加する
RUN echo 'make user takemi'
RUN adduser -m takemi;echo "takemi:takemi123" | chpasswd;
#sshのインストール
RUN yum install -y openssh-server
RUN systemctl enable sshd
#Apacheのインストール
RUN yum install -y httpd
RUN systemctl enable httpd
#MariaDBのインストール
RUN curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash
RUN yum install -y MariaDB-server
RUN systemctl enable mariadb
RUN yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
RUN yum -y install --enablerepo=remi,remi-php73 php php-mbstring php-xml php-xmlrpc php-gd php-pdo php-pecl-mcrypt php-mysqlnd php-pecl-mysql
#DocumentRoot作成
RUN mkdir /var/www/webapp
RUN chown takemi /var/www/webapp
RUN chgrp takemi /var/www/webapp
RUN chmod 774 /var/www/webapp
RUN gpasswd -a apache takemi
USER takemi
COPY index.html /var/www/webapp/
USER root
RUN chmod 772 /var/www/webapp/index.html
#RUN systemctl restart httpd