前面我們已經安裝好了docker,同時瞭解了docker的簡易用法。接下來我們先嚐試使用docker搭建手動lnmp環境,以便進一步的瞭解docker的相關用法吧!
部署mysql
由於mysql部署比較簡單,我們就先捏個軟柿子,並且像資料庫這種關係到公司命脈的服務建議不要放在容器中,這裡我們只是做一個簡單的實驗。我們選用的是目前版本比較新的mysql5.7。
//拉去映象
docker pull mysql:5.7
/*相關引數解析*/
//-d 開啟Daemon模式。
//-p hostPort:containerPort 埠對映
//-e 為容器設定環境變數 MYSQL_ROOT_PASSWORD:mysql密碼
//--name 容器啟動時的名字
docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=mypassword --name mysql mysql:5.7
部署ngnix
nginx伺服器的HTML路徑(網站根目錄)在容器 /usr/share/nginx/html 目錄下,現在需要把這個目錄對映到宿主機的 /var/www/nginx/html 目錄(可自定義檔案目錄)。Nginx 的強大很大部分體現在配置檔案上,對於一些高階的應用來說,自定義 Nginx 非常重要。我們需要把 Nginx 的配置檔案對映到宿主機中。
先起一個nginx 把配置檔案複製到宿主機中。
docker run --name nginx -p 81:80 -d nginx
cd /var/www/nginx/conf
//複製nginx配置檔案
docker cp nginx:/etc/nginx/conf.d/default.conf default.conf
docker ps -a # 檢視正在執行的容器
docker stop nginx # 停止正在執行的容器
docker start nginx # 啟動一個已經停止的容器
docker rm nginx # 刪除容器
啟動nginx,並且將nginx配置檔案、網站根目錄對映到宿主機上
//如果掛載一個空的資料捲到容器中的一個非空目錄中,那麼這個目錄下的檔案會被複制到資料卷中。
//如果掛載一個非空的資料捲到容器中的一個目錄中,那麼容器中的目錄中會顯示資料卷中的資料。如果原來容器中的目錄中有資料,那麼這些原始資料會被隱藏掉。
docker run --name nginx -p 81:80 -v /var/www/nginx/html:/usr/share/nginx/html -v /var/www/nginx/default.conf:/etc/nginx/conf.d/default.conf
部署php
拉取php7.2映象
docker pull php:7.2-fpm
複製php.ini 需要進入容器中解壓php.tar.xz。如果本地有php.ini檔案可將本地檔案複製,忽略此步驟
//啟動php容器
docker run --name php-fpm -p 9001:9000 -itd 7.2:fpm
//進入php容器
docker exec -it php-fpm /bin/bash
//進入 /usr/local 目錄解壓 php.tar.xz
cd /usr/local
tar -xvf php.tar.xz
//複製檔案
docker cp php-fpm:/usr/local/php-7.2.15/php.ini-development php.ini
docker cp php-fpm:/usr/local/etc/php-fpm.d/www.conf www.conf
docker stop php-fpm
docker rm php-fpm
重新啟動php,並將配置檔案對映的容器中
docker run --name php-fpm -p 9001:9000 --link mysql:mysql -v /var/www/nginx/html:/var/www/html -v /var/www/nginx/conf/www.conf:/usr/local/etc/php-fpm.d/www.conf -v /var/www/nginx/conf/php.ini:/usr/local/etc/php/php.ini -d php:fpm
修改nginx配置檔案
server {
listen 80;
server_name _;
root /usr/share/nginx/html;
index index.php index.html index.htm;
//charset koi8-r;
//access_log /var/log/nginx/log/host.access.log main;
location / {
//root /usr/share/nginx/html;
//index index.php index.html index.htm;
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
location = /40x.html {
root /user/share/nginx/html;
}
// redirect server error pages to the static page /50x.html
//
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
// proxy the PHP scripts to Apache listening on 127.0.0.1:80
//
//location ~ \.php$ {
// proxy_pass http://127.0.0.1;
//}
// pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
//
location ~ \.php$ {
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
// fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
// deny access to .htaccess files, if Apache's document root
// concurs with nginx's one
//
location ~ /\.ht {
deny all;
}
}
重新啟動 nginx 讓其支援 php
docker run --name nginx -p 81:80 --link php-fpm -v /var/www/nginx/html:/usr/share/nginx/html -v /var/www/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf -d nginx
在 /var/www/nginx/html 新建index.php
<?php
phpinfo();
至此 php7.2 + nginx + mysql5.7 完美搭建完成!這只是個簡易搭建方式,後續會有更高效的搭建方法哦!
本作品採用《CC 協議》,轉載必須註明作者和本文連結