2019-05-18に更新

EC2+Docker(+docker-compose)でPHPの環境構築をしてみた

一通り触ってみたので備忘録も兼ねて書いています。
誤りなどがありましたらご指摘をお願いします。

前提:

  • Macで開発
  • EC2はAMI2を使用
  • EC2の環境構築は完了している

手順1:Dockerをインストール&起動

EC2にログイン

ssh -i キーファイル [email protected]アドレスorDNS名

Amazon ECS における Docker の基本に沿っていく(最初にsudo -iでrootユーザになってもよい)

sudo yum update -y
sudo yum install -y docker
sudo service docker start
sudo usermod -a -G docker ec2-user

一旦出る

exit

再度SSHで入った後docker infoとかでsudoを付けずにコマンドが実行できるか確認。

疑問点:EC2を再起動した場合は再度usermodをしないといけない?

手順2:docker-composeをインストール

Install Docker Composeに沿っていく。

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

docker-compose --versionで確認。

手順3:Dockerfileを作成

vi Dockerfileでvimを開く

# Docker-Hubから落としてくる
FROM php:7.3.5-apache

後ろにはhttps://hub.docker.com/_/phpにあるタグで-apacheとあるのを書く。
これでPHPとApacheが両方入る。

手順4:docker-compose.ymlを作成

vi docker-compose.ymlで開く

# ファイルフォーマットのバージョンを指定
# https://docs.docker.com/compose/compose-file/
version: '3'

services:
  web:
    image: web # 'docker images'参照。使用するイメージの指定
    build: . # 使用するDockerfileの場所
    ports:
      - "80:80" # host=EC2のport:gest=コンテナのポート
    volumes:
      # コンテナ内のデータは永続化されないのでマウントさせる
      # hostのフォルダ:gestのフォルダ
      - /home/ec2-user/tmp/html:/var/www/html

疑問点:インストールされたdocker-composeは1.24.0なのに指定できないのは何故?

手順5:マウントさせるフォルダにphpファイルを作成

今回は/home/ec2-user/tmp/htmlに作成。vi index.phpで開く

<?php echo 'Hello Docker!' ?>

手順6:docker-composeでイメージとコンテナを作成・起動

docker-compose build up -dで諸々が作成・起動される。

docker imagesとかdocker ps -aとかで確認。

最後:

ブラウザで表示確認

スクリーンショット 2019-05-13 19.41.10.png

最初はDockerとdocker-composeとの違いに戸惑いました。Dockerコマンド自体の上位互換と考えれば良さそうですね。

参考リンク:

https://qiita.com/hidekuro/items/fc12344d36d996198e96#32-docker
https://qiita.com/kotaro-dr/items/b1024c7d200a75b992fc#コンテナ一覧を確認
https://qiita.com/yumatsud/items/33bc22f7d8f640a286f4#docker-composerの設定
https://qiita.com/Ryooota/items/65ff0c32a5d93f225d7a#4-コンテナの起動


蓮

HSP&HSS, Engineer, Gamer. HSP Community service developer(coming soon...)

Crieitは個人で開発中です。 興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!

ボードとは?

関連記事

コメント