边学边操作,在菜鸟教程上面docker教程进行学习的。用的是腾讯云的云服务器,系统是CentOS 7.9的。
环境版本:nginx:最新 php:7.2 mysql:5.7
nginx
命令:mkdir /www/docker
mkdir /usr/local/nginx-docker/conf/conf.d
设置主机服务器和挂载的nginx容器路径,并创建主机路径的文件夹
项目文件夹路径 主机:/www/docker 容器:/usr/share/nginx/html
配置文件夹路径 主机:/usr/local/nginx-docker/conf/conf.d 容器:/etc/nginx/conf.d命令:docker pull nginx:latest
docker下拉nginx镜像最新(latest)的版本通过 docker ps 命令查看是否安装成功:
在浏览器进行访问,地址为 主机域名或IP:8080,显示Welcome to nginx! 表示安装成功
php
设置主机服务器和挂载的php容器路径
项目路径 主机:/www/docker 容器:/var/www/html命令:docker pull php:7.2-fpm
docker下拉php镜像7.2的版本命令:docker run --name php-fpm -v /www/docker:/var/www/html -d php:7.2-fpm
通过php镜像运行容器
--name : 将容器命名为 php-fpm。
-v :将主机中项目的路径 /www/docker 挂载到容器的 /var/www/html
-d :设置容器在在后台一直运行。-
命令:cd /usr/local/nginx-docker/conf/conf.d
vim php-nginx.conf在主机的nginx配置文件夹(/usr/local/nginx-docker/conf/conf.d)
创建文件*.conf,会直接挂载到容器配置文件夹 (/etc/nginx/conf.d)
文件 php-nginx.conf
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
include fastcgi_params;
}
}
命令:docker run --name php-nginx -p 8081:80 -d
-v /www/docker:/usr/share/nginx/html:ro
-v /usr/local/nginx-docker/conf/conf.d:/etc/nginx/conf.d:ro
--link php-fpm:php nginx
通过nginx镜像运行容器
--name :容器名称。
-p :端口进行映射,将主机 8081 端口映射到容器内部的 80 端口。
-v :将主机中项目文件夹 (/www/docker) 挂载到容器项目文件夹 (/usr/share/nginx/html)
将主机中配置文件夹 (/usr/local/nginx-docker/conf/conf.d) 挂载到容器文件夹 (/etc/nginx/conf.d)
--link : 把 php-fpm 的网络并入 nginx,并通过修改 nginx 的 /etc/hosts,把域名 php 映射成 127.0.0.1,让 nginx 通过 php:9000 访问 php-fpm。通过 docker ps 命令查看是否安装成功:
在主机项目文件夹(/www/docker)创建一个index.php,测试用的,访问IP:8080/index.php,正常访问,安装成功。
文件 index.php
<?php
echo phpinfo();
?>
mysql
命令:docker pull mysql:5.7
docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
docker下拉mysql镜像5.7的版本
通过mysql镜像运行容器
--name : 将容器命名为 mysql-test。
-p :端口进行映射,将主机 3306 端口映射到容器内部的 3306 端口。
-e :设置 MySQL 服务 root 用户的密码。通过 docker ps 命令查看是否安装成功:
命令:docker exec -it mysql-test bash
mysql -h localhost -u root -p
123456
进入mysql容器,过 root 和密码 123456 访问 MySQL 服务。如果遇到远程无法连接数据库的问题,可以尝试在mysql命令行输入命令:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';