基於Docker搭建PHP+Nginx+MySQL開發環境
使用 Homebrew 安裝
$ brew install --cask --appdir=/Applications docker
==> Creating Caskroom at /usr/local/Caskroom
==> We'll set permissions properly so we won't need sudo in the future
Password: # 輸入 macOS 密碼
==> Satisfying dependencies
==> Downloading https://download.docker.com/mac/stable/21090/Docker.dmg
######################################################################## 100.0%
==> Verifying checksum for Cask docker
==> Installing Cask docker
==> Moving App 'Docker.app' to '/Applications/Docker.app'.
🍺 docker was successfully installed!
在載入 Docker app 後,點選 Next,可能會詢問你的 macOS 登陸密碼,你輸入即可。之後會彈出一個 Docker 執行的提示視窗,狀態列上也有有個小鯨魚的圖示。
手動安裝下載
不使用Homebrew 安裝docker,可以在下方連結手動下載安裝
www.docker.com/get-started
在使用docker前多多少少都會了解一些docker是什麼,做什麼用的。
Docker的應用場景:
- Web 應用的自動化打包和釋出。
- 自動化測試和持續整合、釋出。
- 在服務型環境中部署和調整資料庫或其他的後臺應用。
- 從頭編譯或者擴充套件現有的 OpenShift 或 Cloud Foundry 平臺來搭建自己的 PaaS 環境。
關於docker的日常開發應用到服務部署應用(k8s部署docker)等。上面解釋的幾句也是給不了定義的,大家還是要從官方文件多去深入學習。( https://docs.docker.com/)
開始搭建
??????
接下來在docker中搭建環境並且執行,本次執行使用的是docker-compose為例,docker run方式可參考官方文件
docker-compose參考地址:
docs.docker.com/compose/
docker run參考地址:docs.docker.com/engine/reference/c...
- 拉取程式碼
//把專案克隆到本地
git clone https://github.com/mayjiangfei/macdoc.git
個人建議直接下載zip
github.com/mayjiangfei/macdoc/arch...
- .env配置
在bin目錄建立 .env 檔案新增以下內容
RUN_MODE_DEBUG='debug'
RUN_MODE_ALL='all'
#所有專案path
SERVICE_PROJECT_PATH=''
#NGINX
NGINX_IMAGE='nginx:1.19'
NGINX_CONFD='./nginx/config/conf.d'
NGINX_CONF='./nginx/config/nginx.conf'
NGINX_LOG='./nginx/log'
#PHP
SERVICE_PHP1_IMAGE='wangjiangfei/php-fpm-7.3:v1.0'
SERVICE_PHP1_INI='./php/config/php.ini'
SERVICE_PHP1_TMP='./php/tmp'
SERVICE_PHP1_LOG='./php/log'
#mysql
MYSQL_IMAGE='docker.io/mysql:5.7.35'
MYSQL_DB='./mysql/db'
MYSQL_CNF='./mysql/conf/my.cnf'
MYSQL_INIT='./mysql/init'
MYSQL_ROOT_PASSWORD='123456'
.env檔案 SERVICE_PROJECT_PATH 引數 需要替換為自己本地存放專案的地址。
- nginx配置
/bin/nginx/config/nginx.conf中最後一行:include /etc/nginx/conf.d/*.conf;
所以自己在本地 /docker-dev/bin/nginx/config 路徑建立一個conf.d的配置資料夾。下面給出一個default.conf檔案參考
server {
listen 80;
listen [::]:80;
server_name www.default.com;
#這裡的root地址要寫容器內專案入口檔案地址。
root /php/專案名稱/public;
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
access_log /var/log/nginx/admin-center.log post_log;
}
location / {
index index.php index.html index.htm;
if (!-e $request_filename){
rewrite (.*) /index.php;
}
}
}
- 如何啟動和進入容器。舉例:bash ./sh/start-docker.sh (在docker-dev根目錄執行即可)
start-docker.sh 執行docker容器
stop-docker.sh 停止....
php.sh 進入php容器
nginx.sh 進入nginx容器
- 本地與容器內對映關係
/bin 目錄中 **docker-compose.yml** 檔案中檢視檔案對映關係(docker皮膚看方便)
在這裡nginx的埠對映我是8080:80,你們自己可修改為80:80
6.關於專案的composer install
假設你在app的目錄拉取下來一份laravel專案要開發,這時候需要用composer install安裝依賴包
1.執行php.sh進入到php容器,並且進入到/php目錄下
bash ./sh/php.sh
cd /php
2.檢視/php這個目錄就會有你拉取的專案,進入到你的專案中執行composer install即可(docker中自有composer,不必在本地倒騰)
環境到此就執行起來了,大家在執行過程中遇到什麼問題可以提出。我難免會遺漏一些東西。
本作品採用《CC 協議》,轉載必須註明作者和本文連結