摘要:安裝官網(wǎng)命令行安裝用命令安裝的童鞋注意,長城寬帶會讓你非常失望安裝包安裝如果需要手動下載,請點擊以下鏈接下載或版本的。這里配置不好的化,文件運行不起來的。
這里教大家用docker安裝nginx、php、mysql,搭建一套完整的本地開發(fā)環(huán)境,這里以mac為列,windons安裝大同小異,可以嘗試一下。1. 安裝docker
官網(wǎng):https://www.docker.com/
1.1 命令行安裝用命令安裝的童鞋注意,長城寬帶會讓你非常失望!
brew cask install docker1.2 安裝包安裝
如果需要手動下載,請點擊以下鏈接下載 Stable 或 Edge 版本的 Docker for Mac。
1.3 設(shè)置鏡像至于為什么要設(shè)置鏡像嘛,我只能說呵呵
我這里設(shè)置了http://f1361db2.m.daocloud.io
具體方法如下:
docker pull nginx2.2 準備好本地配置文件
在本地準備好nginx的配置文件,這里一定要記好,運行nginx的時候要用
/Users/sole/docker/nginx2.3 準備好本地網(wǎng)站存放的目錄
在本地準備好的網(wǎng)站存放目錄以及網(wǎng)站,記好,后續(xù)有用
2.4 運行nginxdocker run --name nginx_server -p 80:80 -v ~/Sites:/etc/www -v ~/docker/nginx/conf.d:/etc/nginx/conf.d --link php_server:php -d nginx
各個參數(shù)的解釋:
各個參數(shù)配置遵循這個規(guī)則: 本地目錄:容器地址
--name 是tag名字
-p 端口映射
-v 配置文件夾
-d 后臺運行
--link 這個還不怎么明白,大概意思就是把php_server并入nginx_server, 然后在nginx的配置文件里面配置的時候,直接用php,請看nginx配置代碼;當然這個也不是必須這么做,知識這么做很方便;如果不用這個方法,可以運行docker inspect php_server | grep ""IPAddress""獲取容器IP,把IP放在這里也可以。這里配置不好的化,php文件運行不起來的。
location ~ .php$ { fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }2.5 確保nginx已經(jīng)啟動
運行 docker ps -a 來看查nginx是否啟動成功
看到這里,只能說明nginx已經(jīng)實例化了,但是并不確定是否啟動,這個時候可以用工具來檢查
如果你用的是VSCode,那么可以安裝docker插件,來管理運行的容器實例
如果不行用這個可以用docker的圖形管理工具 keitematic
kitematic長這個樣子: 在這里可以看是否啟動,還可以配置相關(guān)參數(shù)
2.6 nginx配置注意事項 2.6.1 關(guān)于程序目錄 /etc/www/php注意root參數(shù)的值,這個目錄是容器里面的目錄,不是本地的, /etc/www/php 是指容器的目錄,如果你本地和容器目錄一致的話,可以不用理會
server { listen 80; server_name www.php.cc; root /etc/www/php; location / { index index.html index.php index.htm; } }2.6.2 關(guān)于nginx配置文件目錄的映射 /Users/sole/docker/nginx/conf.d:/etc/nginx/conf.d
這里建議把conf.d的目錄映射配置好就可以了,如果設(shè)置為-v /Users/sole/docker/nginx:/etc/nginx ,本地的文件會把覆蓋容器里面的配置文件覆蓋掉,導致nginx啟動不起來,或者運行不起來php文件,會出現(xiàn)的錯誤:https://segmentfault.com/q/10...
這里安裝最新版本的php
docker pull php:fpm3.2 準備好本地程序文件夾
我本地的目錄在 /Users/sole/Sites,這里就不截圖了,上面應該能看到的
/Users/sole/Site 可以簡寫為 ~/Sites,因為 ~ 代表當前用戶的home目錄
3.3 跑起來docker run --name php_server -p 9000:9000 -v ~/Sites:/etc/www --link mysql_server:mysql -d php:fpm3.4 安裝擴展
先得進入容器:docker exec -it php_server /bin/bash
然后運行 docker- , 按兩下tab鍵會有提示
語法:docker-php-ext-install 擴展名,比如:docker-php-ext-install mysqli
3.5 PHP連接數(shù)據(jù)庫連接數(shù)據(jù)庫的時候最好查看一下mysql的ip,我這里是 172.17.0.2,所以這里這樣寫了:
$db = [ "hostname" => "172.17.0.2", "username" => "root", "password" => "root", "database" => "learing", "port" => 3306, "charset" => "utf8" ];
注意一下 3.3小姐里面的代碼:link這里,如果不連接mysql,在php連接數(shù)據(jù)庫的時候,需要獲取到mysql_server的容器IP,如果這里link了,那么在host這里可以直接寫link的值,請看代碼:
$db = [ "hostname" => "mysql", // mysql就是php link mysql 的值 "username" => "root", "password" => "root", "database" => "learing", "port" => 3306, "charset" => "utf8" ];
docker pull mysql4.2 運行起來
docker run --name mysql_server -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql4.3 查看mysql_server IP
docker inspect mysql_server | grep ""IPAddress""4.3 進入mysql
docker run -it --link mysql_server:mysql --rm mysql sh -c "exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD""5. 其他細節(jié)
這里列舉幾個問題,如果又其他問題,請留言,我會修正啊
5.1 關(guān)于容器啟動順序因為nginx_server link 了php,php_server又link了mysql_server,所以,容器啟動順序為:mysql_server > php_server > nginx_server
5.2 如何進入容器$ docker exec -it nginx_server /bin/bash $ docker exec -it php_server /bin/bash $ docker exec -it mysql_server /bin/bash5.3 mysqli報錯
應該是沒有安裝mysqli擴展,進入php容器安裝擴展就可以了
docker-php-ext-install mysqli5.4 php安裝gd庫
進入php容器后,請 依次 執(zhí)行以下命令:
apt-get update apt-get install libpng-dev libjpeg-dev libfreetype6-dev docker-php-ext-install gd
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/27484.html
摘要:做了一次分享,主題使用搭建開發(fā)環(huán)境,簡單介紹了一下的概念,演示了使用構(gòu)建全套環(huán)境。應場景通常于如下場景應的動化打包和發(fā)布動化測試和持續(xù)集成發(fā)布在服務型環(huán)境中部署和調(diào)整數(shù)據(jù)庫或其他的后臺應從頭編譯或者擴展現(xiàn)有的或平臺來搭建的環(huán)境。 做了一次分享,主題《使用 Docker 搭建開發(fā)環(huán)境》,簡單介紹了一下 Docker 的概念,演示了使用 Docker-compose 構(gòu)建全套 PHP 環(huán)境...
摘要:做了一次分享,主題使用搭建開發(fā)環(huán)境,簡單介紹了一下的概念,演示了使用構(gòu)建全套環(huán)境。應場景通常于如下場景應的動化打包和發(fā)布動化測試和持續(xù)集成發(fā)布在服務型環(huán)境中部署和調(diào)整數(shù)據(jù)庫或其他的后臺應從頭編譯或者擴展現(xiàn)有的或平臺來搭建的環(huán)境。 做了一次分享,主題《使用 Docker 搭建開發(fā)環(huán)境》,簡單介紹了一下 Docker 的概念,演示了使用 Docker-compose 構(gòu)建全套 PHP 環(huán)境...
摘要:本文就介紹如何使用搭建本地環(huán)境。講座介紹是現(xiàn)在火熱的一個容器技術(shù),作為開發(fā)人員有必要掌握它的使用,無論你是用來搭建本地環(huán)境,還是部署應用。 (原文地址:https://blog.tanteng.me/2017/...) Laravel 官方提供 Homestead 和 Valet 作為本地開發(fā)環(huán)境,Homestead 是一個官方預封裝的 Vagrant Box,也就是一個虛擬機,但是跟...
摘要:本文就介紹如何使用搭建本地環(huán)境。講座介紹是現(xiàn)在火熱的一個容器技術(shù),作為開發(fā)人員有必要掌握它的使用,無論你是用來搭建本地環(huán)境,還是部署應用。 (原文地址:https://blog.tanteng.me/2017/...) Laravel 官方提供 Homestead 和 Valet 作為本地開發(fā)環(huán)境,Homestead 是一個官方預封裝的 Vagrant Box,也就是一個虛擬機,但是跟...
摘要:國內(nèi)的鏡像倉庫由于地理位置的原因,國內(nèi)訪問的官方倉庫是比較慢的,所以在這里介紹一個國內(nèi)的倉庫靈雀云。靈雀云鏡像倉庫中匯集了大量來自社區(qū)的優(yōu)質(zhì)作品,讓用戶組合復用容器化微服務,輕松搭建新一代云端應用。 本文目的 做過開發(fā)的人對開發(fā)環(huán)境的安裝、配置應該都不會太陌生,不管你做什么開發(fā),對開發(fā)環(huán)境都會具有一定的依賴性的。對于 PHP 的 Web 開發(fā)來說,開發(fā)環(huán)境至少要有一個 Web 服務器(...
閱讀 2618·2021-09-28 09:36
閱讀 2228·2021-09-07 09:58
閱讀 1492·2019-08-26 13:53
閱讀 1275·2019-08-23 17:53
閱讀 3023·2019-08-23 15:34
閱讀 1850·2019-08-23 15:34
閱讀 2864·2019-08-23 12:04
閱讀 3717·2019-08-23 10:56