差異處
這裏顯示兩個版本的差異處。
Both sides previous revision 前次修改 下次修改 | 前次修改 | ||
docker:docker:setup_https_php [2024/01/23 21:57] tony [Prepare files] |
docker:docker:setup_https_php [2024/01/23 22:16] (目前版本) tony |
||
---|---|---|---|
行 1: | 行 1: | ||
{{tag>docker}} | {{tag>docker}} | ||
- | ====== Setup HTTPS + PHP with docker ====== | + | ====== Setup HTTP + PHP with docker ====== |
===== Introduction ===== | ===== Introduction ===== | ||
過去我架設網站的方式不是用實體機器的OS,就是透過VirtualBox,不然就是VMWare ESXi。因為我對Docker不熟,所以這次趁著要報廢舊機器,開始嘗試使用Docker架站。本篇記錄我在Rocky Linux 9.2上的設定過程。 | 過去我架設網站的方式不是用實體機器的OS,就是透過VirtualBox,不然就是VMWare ESXi。因為我對Docker不熟,所以這次趁著要報廢舊機器,開始嘗試使用Docker架站。本篇記錄我在Rocky Linux 9.2上的設定過程。 | ||
行 96: | 行 96: | ||
phpinfo(); | phpinfo(); | ||
</code> | </code> | ||
+ | ==== First Startup ==== | ||
+ | 接著在docker-compose設定檔的目錄下,執行以下指令: | ||
+ | <code bash> | ||
+ | podman-compose up | ||
+ | </code> | ||
+ | 在連至我的dokuwiki後,就出現以下錯誤:\\ | ||
+ | {{:docker:docker:docker_php_permission.png|}} | ||
+ | ==== Tune Permission ==== | ||
+ | 研究後,發現root cause是由於php container對於dokuwiki的volume沒有寫入的權限。要解決這個問題,就是讓container與外部系統對應資料有相同的使用者即可;而container對於外部系統的使用者,只會認得ID。這意味著就是讓彼此的ID相同就可以解決這個問題。 | ||
+ | === 設定外部系統資料夾擁有者 === | ||
+ | 首先查詢要設定的使用者ID: | ||
+ | <code bash> | ||
+ | [root@localhost dokuwiki]# id -u tonylin | ||
+ | 1000 | ||
+ | </code> | ||
+ | 將使用者與群組設定到對應目錄上: | ||
+ | <code bash> | ||
+ | chown -R tonylin:tonylin app | ||
+ | </code> | ||
+ | === 調整PHP Dockerfile權限 === | ||
+ | 重新建立www-data使用者與群組,並將ID設為1000。設為1000的原因,是由於前一步驟已經查到使用者ID為1000。 | ||
+ | <code> | ||
+ | FROM php:7.4.9-fpm-alpine | ||
+ | RUN apk --no-cache add shadow | ||
+ | |||
+ | COPY php.ini $PHP_INI_DIR/conf.d/ | ||
+ | |||
+ | ARG USER_ID=1000 | ||
+ | ARG GROUP_ID=1000 | ||
+ | |||
+ | RUN userdel -f www-data &&\ | ||
+ | if getent group www-data ; then groupdel www-data; fi &&\ | ||
+ | groupadd -g ${GROUP_ID} www-data &&\ | ||
+ | useradd -l -u ${USER_ID} -g www-data www-data &&\ | ||
+ | install -d -m 0755 -o www-data -g www-data /home/www-data | ||
+ | </code> | ||
+ | 如果上述腳本執行有問題,可以執行底下指令去看build container的詳細執行過程。 | ||
+ | <code bash> | ||
+ | podman-compose up -build | ||
+ | </code> | ||
+ | ==== Startup again ==== | ||
+ | 最後在docker-compose設定檔的目錄下,執行以下指令,然後就可以看到畫面了~ | ||
+ | <code bash> | ||
+ | podman-compose up | ||
+ | </code> | ||
+ | {{:docker:docker:docker_fix_permission_issue.png|}}\\ | ||
+ | 接下來我就要開始設定憑證和讓網站上線了。 | ||
===== Reference ===== | ===== Reference ===== | ||
* [[https://jtreminio.com/blog/running-docker-containers-as-current-host-user/|將目前User設定到docker container中]] | * [[https://jtreminio.com/blog/running-docker-containers-as-current-host-user/|將目前User設定到docker container中]] |