【Docker】在EC2实例上将nginx和php-fpm容器进行协作
总结
在EC2实例上安装并运行Docker和Docker Compose的方法备忘录
操作系统: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的版本!
# 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!
FROM nginx:alpine
ENV LANG ja_JP.UTF-8
version: "3"
services:
nginx:
build: ./docker/nginx
ports:
- 80:80
使用自己的index.html文件准备nginx容器
$ 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
<!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>
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
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!
<?php
echo 'hogehoge';
phpinfo();
FROM nginx:alpine
ENV LANG ja_JP.UTF-8
ADD ./index.php /project/index.php
ADD ./default.conf /etc/nginx/conf.d/default.conf
FROM php:7.1-fpm-alpine
ENV LANG ja_JP.UTF-8
ADD ./index.php /project/index.php
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;
}
}
version: "3"
services:
nginx:
build: ./docker/nginx
ports:
- 80:80
depends_on:
- php-fpm
php-fpm:
build: ./docker/php-fpm