docker安裝nginx+mysql+php
1、首先安裝docker
下載docker的阿里映象源:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
安裝docker所需的依賴包:
yum -y install yum-utils device-mapper-persistent-data lvm2 container-selinux
新增docker的阿里源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安裝docker
yum -y install docker-ce
啟動docker
systemctl restart docker
2、安裝docker阿里雲加速器
登入自己的阿里雲賬號進入一下頁面即可複製專屬加速器地址
https://cr.console.aliyun.com/#/accelerator
配置加速器
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://756fdy0k.mirror.aliyuncs.com"]
3、拉取所需映象
docker pull nginx:latest
docker pull mysql:8
docker pull bitnami/php-fpm
4、建立資料夾
mkdir -pv /docker/www #網站根目錄
mkdir -pv /docker/nginx/conf.d/ #nginx配置檔案
mkdir -pv /docker/mysql #資料庫資料夾
5、構建mysql容器
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /docker/mysql:/var/lib/mysql --name mysql8 mysql:8
連入容器中
docker exec -it mysql8 bash
登入資料庫重置密碼:
mysql -uroot -p123456
use mysql
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
alter user 'root'@'%' identified by '123456';
FLUSH PRIVILEGES;
在宿主機上測試是否能夠連入資料庫
檢視資料庫容器IP地址:
docker inspect mysql8 --format='{{.NetworkSettings.IPAddress}}'
mysql -h 172.17.0.2 -uroot -p123456
資料庫配置完成
6、構建nginx容器
docker run -p 80:80 --name mynginx \
-v /docker/www:/usr/share/nginx/html \
-v /docker/nginx/conf.d:/etc/nginx/conf.d \
--privileged=true \
-d nginx
7、構建php容器
docker run -p 9000:9000 --name myphp -v /docker/www:/var/www/html\
-d bitnami/php-fpm:latest
8、配置nginx代理
首先檢視php容器的IP地址
docker inspect myphp --format='{{.NetworkSettings.IPAddress}}'
配置nginx代理
vim /docker/nginx/conf.d/default.conf
server {
listen 80 default_server;
server_name _;
root /usr/share/nginx/html;
location / {
index index.html index.htm index.php;
autoindex off;
}
location ~ \.php(.*)$ {
root /var/www/html/;
fastcgi_pass 172.17.0.4:9000; #php容器的IP地址
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
}
9、配置phpinfo頁面
echo "<?php phpinfo();" > /docker/www/info.php
訪問nginx頁面看看
curl localhost/info.php
10、配置php連線資料庫
vim /docker/www/test.php
<?php
$dbms='mysql'; //資料庫型別
$host='mysql8'; //資料庫主機名,此處寫mysql 容器的名字
$dbport = '3306';
$dbName='mysql'; //使用的資料庫
$user='root'; //資料庫連線使用者名稱
$pass='123456'; //對應的密碼
$dsn="$dbms:host=$host;port=$dbport;dbname=$dbName";
try {
$dbh = new PDO($dsn, $user, $pass); //初始化一個PDO物件
echo "successful!<br/>";
//你還可以進行一次搜尋操作
// foreach ($dbh->query('SELECT * from user') as $row) {
// print_r($row); //你可以用 echo($GLOBAL); 來看到這些值
// }
$dbh = null;
} catch (PDOException $e) {
die ("Error!: " . $e->getMessage() . "<br/>");
}
11、測試是否連線資料庫成功
curl localhost/test.php