创建Nginx容器
docker pull nginx
docker run -p 8081:80 --name mynginx1 -v /data/www/wwwroot/project:/home -v /data/www/wwwroot/conf:/etc/nginx/conf.d -d nginx
- -p 代表着把容器中的80端口绑定到宿主机的8081端口,所以以后访问宿主机的80端口就会转发到nginx容器的80端口
- -name 启动的容器的名称
- -v 就是把我主机的/data/www/wwwroot/project目录映射到容器中的/home目录中,在容器中访问/home你就会发现是我/data/www/wwwroot/project目录中的东西。我映射了项目目录和配置文件
- -d 后台运行容器
后面的那个nginx就是镜像的名称了
创建php容器
docker pull php:7.2.9-fpm
docker run -p 9000:9000 --name myphp1 -v /data/www/wwwroot/project:/home -d php:7.2.9-fpm
修改nginx配置文件
- 查看php容器ip
docker inspect 容器ID或容器名 |grep ‘“IPAddress”’ - vim /data/www/wwwroot/conf/default.conf
- 重启nginx容器 docker restart mynginx1
server {
listen 80;
server_name localhost;
root /home;
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log error;
location / {
index index.html index.htm index.php;
}
location ~ \.php$ {
fastcgi_pass 172.17.0.7:9000;//ip地址为php容器ip
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
- 注意nginx和php的目录挂载点,不然就会找不到目录
创建mysql容器
git pull mysql:5.6
docker run -p 3307:3306 --name mymysql -v /data/www/wwwroot/mysql/conf:/etc/mysql/conf.d -v /data/www/wwwroot/mysql/logs:/logs -v /data/www/wwwroot/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
测试mysql连接
vim /data/www/wwwroot/project/index.php
<?php
echo 'hello world docker';
$dsn = "mysql:dbName=test;host=172.17.0.7";//docker mysql ip地址
$user = "root";
$pass = "123456";
$res = new PDO($dsn, $user, $pass);
var_dump($res);
- 此时缺少mysql driver
- 安装pdo_mysql
- 进入容器 docker exec -it myphp1 /bin/bash
- 至目录下 cd /usr/local/bin
- 安装扩展 ./docker-php-ext-install pdo_mysql
- 重启容器 docker myphp1 restart