基於Docker搭建PHP+Nginx+MySQL開發環境

飛飛魚發表於2021-09-22

基於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 Desktop下載地址

在使用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...

  1. 拉取程式碼
//把專案克隆到本地
git clone https://github.com/mayjiangfei/macdoc.git

個人建議直接下載zip
github.com/mayjiangfei/macdoc/arch...

  1. .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 引數 需要替換為自己本地存放專案的地址。

  1. 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;
         }
    }
}
  1. 如何啟動和進入容器。舉例:bash ./sh/start-docker.sh (在docker-dev根目錄執行即可)
    start-docker.sh 執行docker容器
    stop-docker.sh  停止....
    php.sh          進入php容器
    nginx.sh        進入nginx容器
  1. 本地與容器內對映關係
/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 協議》,轉載必須註明作者和本文連結
Reality

相關文章