近期有想要將用了許用的 Worpress 做升級與更使使用套件的動作,另外也一直對新版的 WordPress 有著強烈的好奇心,在使用上新版時也先整理了一些之前舊版 WordPress 常用的套件,主要是因為也都用習慣了,對於只是拿來當開發的筆記本的話相對的也是需要可以穩定,此外在舊的資料轉移的過程中也不知道會不會有問題,因此也在本機端安裝了 MAMP 的 PHP Server 套件來測試,Wordpress 裝是裝起來了,不過心裡是一直想如果有不同的版本別的話,那不是只能在一台上安裝,而資料庫 MySQL 的部份也不可能在別台上直接使用,因此也想起了梅干有寫過 Docter 的文章來使用 PHP 與 WordPress 測試使用,因此也想就花了點時間將實際的做法跟著執行一次。
梅問題 Docter WordPress 的相關文件
[教學]MAC安裝Docker與打造PHP環境和自訂網站根目録、Docker常用指令列表
[教學] DockerFile打造PHP環境,並手動安裝WordPress
Quickstart: Compose and WordPress
01-安裝 Docker 在 MacOS 中
Docker 使用相關連結
官方網站:www.docker.com
教學手冊:docker_practice
Docker下載:docker-ce-desktop-mac
Docker商店:store.docker.com
Docker常用指令
1234567891011121314151617181920212223242526272829303132333435 #全部清除暫存(含容器/影像/網路)docker system prune#清暫存影像檔docker image prune#清暫存容器docker container prune#清暫存網路docker network prune#啟用composedocker-compose up#啟用compose背景執行docker-compose up -d#停用composedocker-compose down#查看目前正在運行的服務docker ps#查看所有的已安裝的服務docker ps -a#停用服務名稱docker stop xxxx#停用全部服務名稱docker stop $(docker ps -a -q)#啟用服務docker start xxx
01-1-下載 Docker 安裝檔
先去官網上註冊帳號,帳號登錄後就可以直接按下戴按鈕取得安裝檔,接著安裝進電腦內。
將 APP 拉進 應用程式資料夾中後,接著點按執行 APP ,在系統的右上方常註上就可以看到 icon,帳號登入使用如果是啟用的話,就會出現綠燈,接著就可以在 terminal 裡輸入 CLI 指令,另外如果硬體的效能分別的話,可以進 Docker 的 Preferences 內設定 CPU / RAM 等效能分配設定。
02-PHP環境建立與自訂網站根目錄
進入 Docker 商店,尋找安裝 PHP 的版號與不然功能 image,就在輸入框中 Key PHP,接著就會出現相關的資料。
進入後有各種 php 的版本,安裝是將安裝語法輸入 Terminal 內。
在預設位置前方,放入修改位置,以及埠號和要執行的php版本。
Windows 的路徑則需使用絕對路徑,如: C:\Users\minwt\dockerweb\aaa 則要寫成 //c/Users/minwt/dockerweb/aaa,另外要注意平台對應的斜線,Window 是 \ ,而 MacOS 是 /。
1 2 3 4 | docker run -d -p 9072:80 -v /Users/jimmy/clouds/gmwu185_hstar/teamFile/docker/phpWp5:/var/www/html php:7.2-apache // 使用 JavaScript 組字串方式來看上面指令的意思 'docker run -d -p' + '埠號' + '-v' + '本機位置' + ':' + '預設位置' + 'php:' + '版本號' |
第一次輸入指令時會跑一小段時間,主要是會上 docker 官網上載對應的檔案與 image 下來,第一次指令少打了 :80 的埠號,但還是將環境啟用,而在瀏覽器上自然是沒有內容 (出現錯誤)。
第二次輸入指令,將 :80 帶入,此時輸入指令 docker ps ,會見到執行二個不同的環境,使用指令 docker stop 將沒要用的境境關閉。
1 2 | # 第二次安裝另外一個版本,透過不用的埠號,來運行不同的php版本。 docker run -d -p 9070:80 -v /Users/jimmy/clouds/gmwu185_hstar/teamFile/docker/phpWp5:/var/www/html php:7.0-apache |
將 info.php 檔放到網站根目錄中,針對啟用的 prot 號輸人網址,就可以看到相關的內容了。另外也將不同版別的環境指執行,分別指派不同的 port 號,輸入指令後就會看到再載入不同的 image 內容下來電腦中,瀏覽器也別分輸入不同 port 的網址就可以看到不同的 PHP 版別於瀏覽器中。
3-MySQL 與 WordPress 的安裝
Docker Store中就有WordPress的影像檔可利用,為何要這麼辛苦,自己手動安裝WordPress,其實最主要的原因就在於,Docker Store中的WordPress版本,則是以目前正式發布的為主,若要安裝測試的版本,那就得手動安裝才行。
把MySQL裝上後,就可以安裝WordPress,理論流程是這子沒錯,但礙於WordPress的資料庫連線方式,在PHP7.0內建並不支援,因此就得特別再作擴充,才能正常的連線,所以這時就得自行打造DockerFile,自行建立PHP的環境與擴充,這樣就可以自行手動來安裝WordPress,或是任何的系統。
3-1-腳本檔與執行設定檔執行 docker
Dockerfile 與 docker-compose.yml 、 info.php 放到網站根目錄下。
特別注意:
Dockerfile 沒有副檔名。
所使用的 PHP 版別是 php:7.0-apache 版本。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | FROM php:7.0-apache # install the PHP extensions we need RUN set -ex; \ \ savedAptMark="$(apt-mark showmanual)"; \ \ apt-get update; \ apt-get install -y --no-install-recommends \ libjpeg-dev \ libpng-dev \ ; \ \ docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr; \ docker-php-ext-install gd mysqli opcache zip; \ \ # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies apt-mark auto '.*' > /dev/null; \ apt-mark manual $savedAptMark; \ ldd "$(php -r 'echo ini_get("extension_dir");')"/*.so \ | awk '/=>/ { print $3 }' \ | sort -u \ | xargs -r dpkg-query -S \ | cut -d: -f1 \ | sort -u \ | xargs -rt apt-mark manual; \ \ apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ rm -rf /var/lib/apt/lists/* # set recommended PHP.ini settings # see https://secure.php.net/manual/en/opcache.installation.php RUN { \ echo 'opcache.memory_consumption=128'; \ echo 'opcache.interned_strings_buffer=8'; \ echo 'opcache.max_accelerated_files=4000'; \ echo 'opcache.revalidate_freq=2'; \ echo 'opcache.fast_shutdown=1'; \ echo 'opcache.enable_cli=1'; \ } > /usr/local/etc/php/conf.d/opcache-recommended.ini RUN a2enmod rewrite expires VOLUME /var/www/html |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | version: '3.1' services: www: build: . restart: always ports: - 80:80 volumes: - ./:/var/www/html db: image: mysql command: --default-authentication-plugin=mysql_native_password restart: always environment: MYSQL_ROOT_PASSWORD: root ports: - 3306:3306 volumes: - ./db:/var/lib/mysql adminer: image: adminer restart: always ports: - 8080:8080 |
1 2 3 | <?php phpinfo(); ?> |
如果 ports: - 80:80 改成 ports: - 8031:80 ,8031 的部份就是指瀏覽器外連的 port 號。
3-2-執行指令與開啟環境,設定 MySQL 與 WordPress
確定網站目錄路徑後,輸入 docker-compose up -d ,發佈完畢後,再輸入 dokcer ps,分別就會看到 mysql、adminer、php 三個 container。
指令與環境發佈後會在資料夾入多個 db 資料夾,這就是 MySQL 資料夾,此時去 WordPress 官網將要安裝的版本解壓縮後放裡網站的根目錄或是指令的相對路徑。
瀏覽器開啟跛徑 127.0.0.1:8080 ,登入資料庫頁面,帳密都是 root。
建立一個新的資料庫。
最後就和一般 WordPress 的安裝方式一樣安裝,但特別要注意資料庫的欄位,主機位址是要輸入 db ,不是 localhost 或是 127.0.0.1 ,得特別留意到。