差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

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中]]