1
0

More than 1 year has passed since last update.

【docker】EC2インスタンスでnginxとphp-fpmコンテナを連携させる

Last updated at Posted at 2020-08-06

概要

EC2インスタンス上でdockerとdocker-composeをインストールして動かす方法メモ
OS: amazonLinux2

ゴール

EC2のEIPに直アクセス(LB通さない)してphpinfoを見られる

dockerインストール

インストール -> 起動 -> ec2-userでも動かせるように権限調整

$ sudo su -
# yum update -y
# amazon-linux-extras install -y docker
# systemctl enable docker
# systemctl start docker
# usermod -aG docker ec2-user

docker-composeインストール

docker-composeのバージョンは適時調整する
バージョン情報まで表示できたらOK!

# curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose
# chmod 755 /usr/local/bin/docker-compose
# docker-compose -v
docker-compose version 1.24.1, build 4667896b

nginxコンテナを作ってアクセス確認

以下はec2-userで操作

$ mkdir project
$ cd project/
$ mkdir -p docker/nginx
$ vi docker/nginx/Dockerfile
$ vi docker-compose.yml
$ docker-compose up -d
EIPにアクセスして「welcome to nginx」が見れればOK!
docker/nginx/Dockerfile
FROM nginx:alpine
ENV LANG ja_JP.UTF-8
docker-compose.yml
version: "3"

services:
  nginx:
    build: ./docker/nginx
    ports:
      - 80:80

nginxコンテナに自前のindex.htmlを用意

$ vi docker/nginx/index.html
$ vi docker/nginx/Dockerfile
$ docker-compose --log-level CRITICAL down --rmi all --volumes
$ docker-compose up -d
EIPにアクセスして用意したhtmlファイルに変わっていればOK
docker/nginx/index.html
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Hogehoge</h1>
<p>Hogehoge</p>
</body>
</html>
docker/nginx/Dockerfile
FROM nginx:alpine
ENV LANG ja_JP.UTF-8

ADD ./index.html /usr/share/nginx/html/index.html

php-fpmコンテナを用意

nginxとの連携はまだ、とりあえずphp-fpmコンテナを立ち上げてphpが動かせることまで確認

$ mkdir -p docker/php-fpm
$ vi docker/php-fpm/Dockerfile
$ vi docker-compose.yml
$ docker-compose --log-level CRITICAL down --rmi all --volumes
$ docker-compose up -d
$ docker-compose exec php-fpm sh

※php-fpmコンテナで実行して、バージョン情報が表示されればOK
/var/www/html # php -v
PHP 7.1.33 (cli) (built: Oct 25 2019 07:25:49) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
docker/php-fpm/Dockerfile
FROM php:7.1-fpm-alpine
ENV LANG ja_JP.UTF-8

nginxコンテナとphp-fpmコンテナを連携

$ vi index.php
$ cp index.php docker/nginx
$ cp index.php docker/php-fpm
$ vi docker/nginx/Dockerfile
$ vi docker/php-fpm/Dockerfile
$ vi docker/nginx/default.conf
$ vi docker-compose.yml
$ docker-compose --log-level CRITICAL down --rmi all --volumes
$ docker-compose up -d
EIPにアクセスしてphpinfoが表示されればOK!
index.php
<?php
echo 'hogehoge';
phpinfo();
docker/nginx/Dockerfile
FROM nginx:alpine
ENV LANG ja_JP.UTF-8

ADD ./index.php /project/index.php
ADD ./default.conf /etc/nginx/conf.d/default.conf
docker/php-fpm/Dockerfile
FROM php:7.1-fpm-alpine
ENV LANG ja_JP.UTF-8

ADD ./index.php /project/index.php
docker/nginx/default.conf
server {
    listen       80;
    server_name  _;

    root /project;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.(php|xml)$ {
        fastcgi_pass  php-fpm:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
        include       fastcgi_params;
    }
}
docker-compose.yml
version: "3"

services:
  nginx:
    build: ./docker/nginx
    ports:
      - 80:80
    depends_on:
      - php-fpm
  php-fpm:
    build: ./docker/php-fpm
1
0
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
1
0