概要
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