一, 安装docker,
官方安装手册:
https://docs.docker.com/install/linux/docker-ce/centos/
二, 下载镜像
docker pull nginx
docker pull mysql
docker pull php:7.3-fpm
#mysql指定版本
docker pull mysql:5.7
#这个也不用记,时间长了自己也会忘,直接去docker上去搜
https://hub.docker.com/
#国内有时候网络还是慢,我翻墙是很快能看见的
三,开一个启动nginx容器
docker run -itd -p 80:80 -v /data/www:/usr/share/nginx/html --name nginx nginx
容器里没vi, 改配置文件还得装vi,还是把目录映射出来吧。
docker run -itd -p 80:80 -v /data/www:/usr/share/nginx/html -v /data/www/nginx.conf:/etc/nginx/nginx.conf -v /data/www/log:/usr/share/nginx/log --name nginx nginx
现在服务器已经能访问了,即nginx已经启动,不用进容器再启动。我没有映射配置文件,可以去容器里修改。
本地的data/www目录自己建一下
cd /
mkdir data
cd data
mkdir www
mkdir log
#敲这么基础的命令,读者会不会以为我白痴?
cd log
touch error.log
#nginx.conf配置文件内容
worker_processes 1;
error_log /usr/share/nginx/log/error.log;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
root /usr/share/nginx/html;
location / {
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ ^/assets/.*\.php$ {
deny all;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 172.17.0.1:9000;
try_files $uri =404;
}
}
}
这里你配错了,就查看日志排错
docker logs nginx
注意,这里配置文件配置的目录,要写容器目录,而不是宿主机目录。
新建一个html可以访问了,下面启动php-fpm
docker run -itd --name php-fpm7.4 -p 9000:9000 -v /data/www:/usr/share/nginx/html c7bd03ed1e4c
启动后php文件访问不了,nginx配置文件
按启动顺序
fastcgi_pass 172.17.0.1:9000;
改成
fastcgi_pass 172.17.0.3:9000;
重启nginx就好了。
docker restart nginx
四,开启mysql
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql
#进容器,设置下远程可连接
docker exec -it d77f49ac7373 /bin/bash
mysql -u root -p
这种命令几年不用也会淡忘
create user 'guanliyang'@'%' IDENTIFIED BY '123456';
GRANT ALL ON *.* TO 'guanliyang'@'%';
设置后本地可连接。编写php文件d.php
<?php
try {
$dbh = new PDO('mysql:host=172.17.0.4;port=3306;dbname=mysql', 'guanliyang', '123456');
foreach($dbh->query('SELECT * from user') as $row) {
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
?>
报错:Error!: could not find driver
没安装pdo,安装一下
docker-php-ext-install mysql pdo_mysql
上句报错仔细看提示,有正确写法
还是要重启的
docker restart php-fpm7.4
链接成功。注意地址是172.17.0.4;
网友评论