整个流程
- 客户端 http 请求服务器 80 端口,该端口被映射到 Nginx 容器 80 端口,进入 Nginx 处理。
- Nginx 分析请求,如果是静态资源,直接服务器读取内容;如果是 PHP 脚本,通过 PHP 容器调用服务器获取脚本,然后 FastCGI 处理。
- FastCGI 解析 PHP 脚本,必要时访问 MySQL 容器读写数据。
MySQL
1 2
| docker pull mysql:8.0.16 docker run --restart=always -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=${ADMIN_PASSWORD} -d mysql:8.0.16 --default-authentication-plugin=mysql_native_password
|
Redis
1 2
| docker pull redis:5.0.4 docker run --restart=always -d --name redis -p 6379:6379 redis:5.0.4
|
或者镜像备份恢复
1 2
| docker save redis:5.0.4 > redis.tar docker load < redis.tar
|
PHP
1 2 3 4
| mkdir -p ~/nginx/html mkdir -p ~/php/ docker pull php:5.6.36-fpm docker run --restart=always --name php-fpm --link mysql:mysql -d -p 9000:9000 -v ~/nginx/html:/usr/share/nginx/html -v ~/php/www.conf:/usr/local/etc/php-fpm.d/www.conf -v ~/php/php.ini:/usr/local/etc/php/php.ini php:5.6.36-fpm
|
目录结构:
~/php/
-> www.conf
-> php.ini
Nginx
1 2 3 4 5 6
| mkdir -p ~/nginx/html mkdir -p ~/nginx/log touch ~/nginx/log/access.log ~/nginx/log/error.log mkdir -p ~/nginx/conf.d docker pull nginx:1.13.12 docker run --restart=always --name nginx --link php-fpm:php-fpm -d -p 80:80 -v ~/nginx/html:/usr/share/nginx/html -v ~/nginx/nginx.conf:/etc/nginx/nginx.conf:ro -v ~/nginx/conf.d:/etc/nginx/conf.d -v ~/nginx/log:/var/log/nginx/ nginx:1.13.12
|
目录结构:
~/nginx/
->conf.d/
->->default.conf
->html/
->->50x.html
->->index.html
->->phpinfo.php
->nginx.conf