[title]注意事项[/title]
- 本文所有操作均在Ubuntu系统中进行
- 本文仅使用于想要使用docker搭建web环境的新手。
- 本文搭建的web环境为nginx+php+mysql
[title]问题[/title]
- 什么是docker? -> 请看这里
- 为什么要用docker搭web? -> 有(xian)趣(de)
[title]安装docker[/title]
可以参考runoob的教程 -> 链接
#安装docker
wget -qO- https://get.docker.com/ | sh
#启动docker
sudo service docker start
新建文件:/etc/docker/daemon.json
{ "registry-mirrors": ["http://hub-mirror.c.163.com"] }
使用 docker search 或在 https://hub.docker.com/ 可搜索镜像
[title]docker命令[/title]
本文用到的docker命令
docker search #搜索服务器上镜像
docker pull #拉取镜像
docker rm #删除容器
docker rmi #删除镜像
docker ps #正在运行容器
docker inspect #镜像/容器数据
docker run #创建运行容器
docker start/stop/restart #启动/停止/重启
docker exec #容器执行命令
[title]1. 创建文件夹[/title]
server
├── mysql
│ ├── conf
│ │ └── my.cnf
│ ├── data
│ └── logs
└── web
├── conf
│ ├── conf.d
│ │ └── default.conf
│ ├── nginx.conf
│ └── php
│ │ └── php.ini
├── logs
└── site
创建文件 server/web/conf/nginx.conf
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
[title]2. 拉取镜像[/title]
#自行选择镜像版本
docker pull nginx:1.15
docker pull php:7.1-fpm
docker pull mysql:5.7
[title]3. 创建nginx容器[/title]
docker run \
-p 80:80 \ #端口映射 容器:主机
--name nginx \ #容器名称
--restart always \ #自动重启
-v /server/web/site:/usr/share/nginx/html \ #网站根目录
-v /server/web/conf/conf.d:/etc/nginx/conf.d \ #网站配置文件目录
-v /server/web/conf/nginx.conf:/etc/nginx/nginx.conf:ro \ #nginx.conf配置文件
-v /server/web/logs:/var/log/nginx \ #日志目录
-d \ #后台运行
nginx:1.15 #镜像
docker run -v <主机路径:容器路径>
这是主机目录到容器目录挂载到容器的目录(nginx.conf为文件)
在修改配置文件时,应考虑的是容器内的路径而不是主机的路径
[title]4. 创建php7-fpm容器[/title]
docker run \
-p 9000:9000 \
--name php7.1 \
--restart always \
-v /server/web/site:/www \
-v /server/web/conf/php:/usr/local/etc/php \
-v /server/web/logs:/phplogs \
-d \
php:7.1-fpm
[title]5. 创建mysql容器[/title]
docker run \
-p 3306:3306 \
--name mysql \
--restart always \
-v /server/mysql/conf:/etc/mysql/conf.d \
-v /server/mysql/logs:/logs \
-v /server/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d \
mysql:5.7
[title]6. 修改网站配置[/title]
创建文件 server/web/conf/conf.d/default.conf
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html; # 注意这里是nginx容器内部的目录
index index.php index.html index.html;
autoindex on;
}
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name; # 这个/www是php-fpm容器的
include fastcgi_params;
}
}
# nginx容器的/usr/share/nginx/html和php-fpm容器的/www都被挂载到了主机的server/web/site
# 也就是nginx容器的/usr/share/nginx/html/a.php就是php-fpm容器的/www/a.php
# 搞清楚这个就不会写错了
php配置文件是 server/web/conf/php/php.ini
mysql配置文件是 server/mysql/conf/my.cnf
[title]7. 完成[/title]
server/web/site 目录下新建 index.php
<?php
phpinfo();
?>
文章评论