D6 - 第一階段小驗收

更新於 發佈於 閱讀時間約 7 分鐘

好了,經過前幾篇的努力,我們的 Docker 環境已經搭建完成。現在,是時候換上使用者的帽子,來驗收我們的開發環境了!畢竟,環境建置得再漂亮,如果不能正常運作,那可就像是買了跑車卻沒油一樣,只能看不能開。

這篇文章,我們將從使用者的角度,逐步測試我們的 Docker 環境,確保所有服務都能如預期般運作。相信我,這個過程可能會遇到一些小插曲,但也是學習和成長的好機會。

一、啟動 Docker 容器

首先,讓我們先確保所有的 Docker 容器都能正常啟動。

1. 執行 Docker Compose

在專案的根目錄下,執行以下指令:

docker-compose up -d --build
  • -d:讓容器在背景執行。
  • --build:確保我們的 Dockerfile 變更有被重新構建。


raw-image


2. 確認容器狀態

接著,我們可以透過以下指令查看容器是否正常運行:

docker-compose ps

你應該會看到類似以下的結果:

Name                     Command               State          Ports
--------------------------------------------------------------------------------
laravel-app docker-php-entrypoint php-fpm Up 9000/tcp
mariadb docker-entrypoint.sh mysqld Up 3306/tcp
nginx nginx -g daemon off; Up 0.0.0.0:80->80/tcp
nuxt-app docker-entrypoint.sh sh -c ... Up 0.0.0.0:3000->3000/tcp

如果所有容器的狀態都是 Up,那麼恭喜你,第一步成功!

二、修改 hosts 檔案

由於我們在 Nginx 的設定中使用了 api.localhost 和 web.localhost,我們需要在本機的 hosts 檔案中添加這兩個域名,才能在瀏覽器中正常訪問。

1. 編輯 hosts 檔案

  • Windows:C:\Windows\System32\drivers\etc\hosts
  • macOS/Linux:/etc/hosts
    在檔案的末尾添加以下內容:
127.0.0.1   api.localhost
127.0.0.1 web.localhost

2. 為什麼要這麼做?

這樣設定後,當我們在瀏覽器中訪問 api.localhost 或 web.localhost 時,電腦就會將請求導向我們本機的 Nginx 服務,進而代理到對應的容器中。

三、測試 Laravel 後端

現在,讓我們來測試一下 Laravel 是否正常運行。

1. 訪問 Laravel 預設頁面

在瀏覽器中輸入 http://api.localhost ,如果一切順利,應該會看到 Laravel 的歡迎頁面。


raw-image


2. 常見問題

  • 看不到歡迎頁面:如果你看到的是 404 錯誤或其他頁面,可能是 Nginx 或 Laravel 沒有正確啟動。可以透過以下指令查看日誌:
docker-compose logs -f nginx
docker-compose logs -f backend
  • Laravel 錯誤信息:如果看到 Laravel 的錯誤頁面,可能是環境變數設定有問題,特別是資料庫連線資訊。

3. 測試資料庫連線

我們需要確認 Laravel 能否正確連接到 MariaDB。

執行遷移指令

進入 Laravel 容器:

docker-compose exec backend bash

在容器內執行:

php artisan migrate
  • 成功:如果遷移成功,表示 Laravel 已經成功連接到資料庫。
  • 失敗:如果出現連線錯誤,請檢查 .env 檔案和 docker-compose.yml 中的資料庫設定。

四、測試 Nuxt 前端

接下來,讓我們確認 Nuxt 前端是否正常運行。

1. 訪問 Nuxt 預設頁面

在瀏覽器中輸入 http://web.localhost ,應該會看到 Nuxt 的歡迎頁面。


raw-image


2. 常見問題

  • 無法訪問:如果頁面無法加載,可能是 Nuxt 容器沒有正確啟動。查看容器狀態:
docker-compose ps
  • Nuxt 錯誤訊息:如果看到錯誤訊息,可能是依賴沒有正確安裝。進入容器後,手動執行:
docker-compose exec frontend sh
npm install
npm run dev

五、測試 Nginx 反向代理

我們需要確保 Nginx 能夠正確地將請求代理到對應的服務。

1. 測試 API 請求

在瀏覽器中訪問 http://api.localhost/api,如果有設定預設的 API 路由,應該會看到對應的回應。

2. 測試前後端互動

稍後我們會開發前端與後端的交互功能,但現在我們可以先確保 Nginx 能夠正確代理請求。

六、常見問題與解決方案

1. 容器無法啟動

  • 檢查 Docker 版本:確保你的 Docker 是最新版本。
  • 檢查配置檔案路徑:確認 docker-compose.yml 中的檔案路徑是否正確。

2. 無法連接資料庫

  • 檢查環境變數:確認 Laravel 的資料庫設定與 MariaDB 容器的設定一致。
  • 容器間網路:確保所有容器都在同一個網路中。

七、個人經驗分享

小故事:有一次,我怎麼測都連不上資料庫,結果發現是因為我在 .env 檔案中把 DB_HOST 設成了 localhost,而不是容器名稱 db。這種低級錯誤,真的是讓人哭笑不得。

小結

經過這一輪的測試,我們應該對整個開發環境的運行情況有了清晰的了解。這個過程可能有點繁瑣,但相信我,解決這些問題所獲得的成就感,絕對值得你投入的時間。

下一步

現在,我們的開發環境已經準備就緒,接下來就可以開始進行後端 API 的開發了!讓我們繼續保持這股幹勁,向著完成專案的目標前進。

留言
avatar-img
留言分享你的想法!
avatar-img
詹姆士的軟體易開罐
27會員
88內容數
這是一系列以軟體開發為主題的輕鬆分享,內容涵蓋了技術選擇、開發經驗、實戰應用等多方面的議題。無論是如何在眾多框架中做出選擇,還是如何應對技術轉移的挑戰,這裡有幽默、有趣的對話風格,將複雜的技術問題轉化為易懂的故事。
2024/12/22
這是我第一次參加 iThome 鐵人賽,原本並沒有打算參加,但在整理專案時,我忽然想把屬於自己的內容公開分享,而不僅僅藏在雲端裡。於是,我獨自規劃、撰寫並完成了一個完整的開發系列文章。在這段過程中,我體會到獨自開發的挑戰與成就,並希望能將這些經驗分享給每一位正在努力前行的你。
Thumbnail
2024/12/22
這是我第一次參加 iThome 鐵人賽,原本並沒有打算參加,但在整理專案時,我忽然想把屬於自己的內容公開分享,而不僅僅藏在雲端裡。於是,我獨自規劃、撰寫並完成了一個完整的開發系列文章。在這段過程中,我體會到獨自開發的挑戰與成就,並希望能將這些經驗分享給每一位正在努力前行的你。
Thumbnail
2024/12/15
這篇文章介紹建立分類列表頁面以及新增和編輯功能。文中詳細說明瞭頁面結構、資料取得、錯誤處理等重要步驟,並強調了共用元件和資料驗證的一致性。通過這次開發,讀者將獲得關於如何在Nuxt中操作動態路由的深入理解,同時提高使用者體驗。希望本篇能幫助讀者順利完成相關功能建置。
Thumbnail
2024/12/15
這篇文章介紹建立分類列表頁面以及新增和編輯功能。文中詳細說明瞭頁面結構、資料取得、錯誤處理等重要步驟,並強調了共用元件和資料驗證的一致性。通過這次開發,讀者將獲得關於如何在Nuxt中操作動態路由的深入理解,同時提高使用者體驗。希望本篇能幫助讀者順利完成相關功能建置。
Thumbnail
2024/12/14
哈囉,大家好!在前面的文章中,我們已經規劃了前端介面,並盤點了所需的頁面與功能。 現在,是時候開始動手實作了。今天,我們將專注於 銀行帳戶列表頁面(Bank Accounts)以及 新增/編輯銀行帳戶頁面(Add/Edit Bank Account)的開發。 透過這次的實作,我們將學習如何在 N
Thumbnail
2024/12/14
哈囉,大家好!在前面的文章中,我們已經規劃了前端介面,並盤點了所需的頁面與功能。 現在,是時候開始動手實作了。今天,我們將專注於 銀行帳戶列表頁面(Bank Accounts)以及 新增/編輯銀行帳戶頁面(Add/Edit Bank Account)的開發。 透過這次的實作,我們將學習如何在 N
Thumbnail
看更多
你可能也想看
Thumbnail
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
本文介紹了 Docker 的基本概念,包括 Docker Image、Docker Container、Dockerfile、Docker Compose 及其應用情境,如開發與測試環境、微服務架構和持續整合/持續部署。瞭解這些內容能幫助開發人員更有效地利用 Docker 進行應用程式的部署和管理。
Thumbnail
本文介紹了 Docker 的基本概念,包括 Docker Image、Docker Container、Dockerfile、Docker Compose 及其應用情境,如開發與測試環境、微服務架構和持續整合/持續部署。瞭解這些內容能幫助開發人員更有效地利用 Docker 進行應用程式的部署和管理。
Thumbnail
本文詳細介紹了如何使用 Docker 環境構建 Laravel 後端和 Nuxt 前端,並通過 Nginx 進行反向代理來協調它們的互動。從 docker-compose.yml 配置到各個服務的設定,讓開發環境穩定運行,並提供了常用的 Docker 指令以便於操作。
Thumbnail
本文詳細介紹了如何使用 Docker 環境構建 Laravel 後端和 Nuxt 前端,並通過 Nginx 進行反向代理來協調它們的互動。從 docker-compose.yml 配置到各個服務的設定,讓開發環境穩定運行,並提供了常用的 Docker 指令以便於操作。
Thumbnail
※ 必備開發環境: Node.Js環境。 Npm或yarn套件管理工具。 Docker倉庫套件:可以快速建立MySQL的資料庫。 下載 Docker Desktop:Docker Desktop for Windows。 ※ Docker快速建立MySQL資料庫,使用步驟: 準備Dock
Thumbnail
※ 必備開發環境: Node.Js環境。 Npm或yarn套件管理工具。 Docker倉庫套件:可以快速建立MySQL的資料庫。 下載 Docker Desktop:Docker Desktop for Windows。 ※ Docker快速建立MySQL資料庫,使用步驟: 準備Dock
Thumbnail
為了做登入log紀錄,練習mongoDB來存放log資料,這邊就來紀錄 Laravel 配置mongoDB的實作,而原本我的side project是練習搭建docker開發環境,故這邊會以dockerfile來設定跟紀錄踩坑問題。
Thumbnail
為了做登入log紀錄,練習mongoDB來存放log資料,這邊就來紀錄 Laravel 配置mongoDB的實作,而原本我的side project是練習搭建docker開發環境,故這邊會以dockerfile來設定跟紀錄踩坑問題。
Thumbnail
前言 前篇把 Ubuntu 作業系統的安裝跟準備談完了,有需要可以跳回去看。接下來聊容器服務 Docker 的安裝與使用。 Docker 可以應用的場合很多,這次是會用它來模擬 Android 受測裝置
Thumbnail
前言 前篇把 Ubuntu 作業系統的安裝跟準備談完了,有需要可以跳回去看。接下來聊容器服務 Docker 的安裝與使用。 Docker 可以應用的場合很多,這次是會用它來模擬 Android 受測裝置
Thumbnail
簡介 因常會在新機器跑container,藉此紀錄安裝過程,順便寫下腳本安裝懶人包 安裝docker 檢查系統中是否已經安裝了docker 執行:ps -ef |grep docker 如上圖所示,說明系統中並沒有安裝docker 添加docker-ce倉庫 安裝yum倉庫管理工具 配置docker
Thumbnail
簡介 因常會在新機器跑container,藉此紀錄安裝過程,順便寫下腳本安裝懶人包 安裝docker 檢查系統中是否已經安裝了docker 執行:ps -ef |grep docker 如上圖所示,說明系統中並沒有安裝docker 添加docker-ce倉庫 安裝yum倉庫管理工具 配置docker
Thumbnail
Development environment of Laravel. Nginx, php, mysql and centos 7
Thumbnail
Development environment of Laravel. Nginx, php, mysql and centos 7
Thumbnail
欲在Laravel中使用MongoDB,首先要確認有安裝MongoDB PHP driver,接著再安裝Laravel MongoDB套件,才能開始使用CRUD。 1. 安裝MongoDB PHP driver (1) 到這邊下載MongoDB PHP driver (3) 檢查是否正常 後記:
Thumbnail
欲在Laravel中使用MongoDB,首先要確認有安裝MongoDB PHP driver,接著再安裝Laravel MongoDB套件,才能開始使用CRUD。 1. 安裝MongoDB PHP driver (1) 到這邊下載MongoDB PHP driver (3) 檢查是否正常 後記:
Thumbnail
圖片來自 Docker (本文譯自〈Docker for PHP Developers〉) 哈囉!Docker Docker 是一個包含許多技術的概括性詞彙,它提供的工具可以幫助你把某個應用(application)的基礎架構(infrastructure)分離成數個邏輯模塊(容器),你可以只組合某
Thumbnail
圖片來自 Docker (本文譯自〈Docker for PHP Developers〉) 哈囉!Docker Docker 是一個包含許多技術的概括性詞彙,它提供的工具可以幫助你把某個應用(application)的基礎架構(infrastructure)分離成數個邏輯模塊(容器),你可以只組合某
Thumbnail
Environment: GCP Linux version: CentOS 7 Laradock的初衷原是為了將Laravel環境容器化,但隨著時間的演進,慢慢包含了各種常用的工具了,如php-fpm, apache, nginx, mysql, phpmyadmin, redis等等這些常用的東
Thumbnail
Environment: GCP Linux version: CentOS 7 Laradock的初衷原是為了將Laravel環境容器化,但隨著時間的演進,慢慢包含了各種常用的工具了,如php-fpm, apache, nginx, mysql, phpmyadmin, redis等等這些常用的東
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News