環(huán)境快速上手:Docker 一鍵跑通前后端與數(shù)據(jù)庫)
OpenProject 本地開發(fā)環(huán)境快速上手Docker 一鍵跑通前后端與數(shù)據(jù)庫【免費下載鏈接】openprojectOpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Gantt charts, time tracking, collaboration features, and more. Available on premises or in the cloud. ? Star us on GitHub項目地址: https://gitcode.com/GitHub_Trending/op/openproject裝過開源項目的人大概率都被環(huán)境坑過Ruby 版本對不上、PostgreSQL 建庫建用戶一套、前端依賴又拉了一晚上等環(huán)境調(diào)通開發(fā)熱情已經(jīng)涼了一半。OpenProject 是當(dāng)下主流的開源項目管理軟件產(chǎn)品、項目、組合管理常被當(dāng)作 Jira 的替代方案內(nèi)置工作包、看板、甘特圖、工時和文檔協(xié)作而它官方提供的開發(fā)棧思路很直接——用 Docker Compose 把后端、前端、PostgreSQL、Memcached、后臺任務(wù)全部裝進(jìn)容器你的機(jī)器只需要裝一個 Docker不用手動伺候 Ruby 和 Node 的版本問題。這篇文章就是帶你走通這條最短路徑從 clone 倉庫到瀏覽器里打開可登錄的 OpenProject 界面中間只有幾條必須親手敲的命令。讀完你能帶走三樣?xùn)|西一份能跨 Windows/macOS/Linux 復(fù)用的啟動流程、出問題時該看哪幾個日志和容器的排查思路、以及日常開發(fā)常用的幾條操作命令。開發(fā)環(huán)境跑起來之后長什么樣先對齊預(yù)期環(huán)境就緒后你訪問http://localhost:3000就是完整的管理后臺登錄頁 → 項目首頁前端熱重載開發(fā)服務(wù)器在http://localhost:4200改 Angular/TypeScript 代碼能即時刷新不用重新編譯。登錄默認(rèn)賬號后即可開始體驗種子數(shù)據(jù)里已經(jīng)建好項目和示例工作包用戶名admin密碼admin環(huán)境準(zhǔn)備先確認(rèn)這兩件事不用裝 Ruby、不用裝 Node、不用建數(shù)據(jù)庫——這些都在容器里。你要確認(rèn)的只有兩件Docker 可用。安裝 DockerWindows 上選 WSL2 后端并確認(rèn)docker compose子命令能跑這是唯一的前置依賴。內(nèi)存給夠。Docker 至少需要 4GB 內(nèi)存官方建議 8GB 起步更穩(wěn)開發(fā)棧消耗的內(nèi)存約為普通生產(chǎn)環(huán)境的兩倍。macOS 上記得在 Docker Desktop 的資源設(shè)置里把虛擬主機(jī)內(nèi)存調(diào)上去內(nèi)存不足最典型的癥狀是前端容器報Exit status 137后反復(fù)重啟。另外確認(rèn)本地 3000、4200 端口沒被占用被占的話后面會在覆蓋配置里改端口??寺〈a到容器全部就緒整個過程就是一個復(fù)制兩個配置文件 → 建一張網(wǎng)絡(luò) → 跑兩條 setup 命令 → 啟動服務(wù)的流程命令不多但順序別亂。拿到源碼并生成配置文件git clone https://gitcode.com/GitHub_Trending/op/openproject cd openproject cp .env.example .env cp docker-compose.override.example.yml docker-compose.override.yml兩個文件各有分工.env存放docker compose讀取的環(huán)境變量。重點把DEV_UID和DEV_GID改成你自己的用戶 IDLinux/macOS 終端里id -u、id -g可以查Windows/WSL2 一般直接用1000否則容器寫回你項目的文件會全部變成 root 所有后面改代碼會處處碰壁。docker-compose.override.yml負(fù)責(zé)把 backend 的 3000 端口、frontend 的 4200 端口暴露出來端口沖突時在這里加 reset/override 規(guī)則解決。如果倉庫里已存在config/database.yml刪掉它——Docker 棧自帶數(shù)據(jù)庫連接這個文件會讓容器內(nèi)的數(shù)據(jù)庫連接直接打架。建共享網(wǎng)絡(luò)hocuspocus實時協(xié)作編輯服務(wù)等容器都掛在一個外部托管的gateway網(wǎng)絡(luò)上compose 文件不會替你建它需要手動執(zhí)行一次docker network create gateway初始化數(shù)據(jù)庫與依賴這兩條命令會各自拉起所需依賴容器完成數(shù)據(jù)庫建庫、遷移、種子數(shù)據(jù)寫入以及 Ruby/Node 依賴安裝。第一次跑會裝一堆 gem 和 npm 包耗時偏長依賴緩存在 Docker volume 里第二次之后就快了docker compose run --rm backend setup docker compose run --rm frontend npm install啟動服務(wù)docker compose up -d backend如果要看前端編譯日志改成docker compose up backend frontend。后臺任務(wù)發(fā)信、異步導(dǎo)出等由worker服務(wù)承擔(dān)大多數(shù)操作不需要它確實用到時再起docker compose up -d worker注意 worker 很吃資源平時別掛常開。自檢與排錯起不來先看這幾個地方怎么算起來了后端日志出現(xiàn) Puma 的啟動成功提示、前端日志出現(xiàn)Compiled successfully.此時訪問http://localhost:3000能到登錄頁http://localhost:4200能到帶熱重載的前端頁面。第一次請求可能轉(zhuǎn)圈好幾秒屬正?,F(xiàn)象之后就會很快。按命中率從高到低排端口沖突或起不來先docker compose ps看哪個服務(wù)沒起來再docker compose logs -f backend或 frontend看最后報錯。3000/4200 被占就在docker-compose.override.yml里改映射端口。前端白屏多半是編譯還在進(jìn)行或編譯失敗看docker compose logs frontend。如果是切分支后node_modules狀態(tài)壞了刪掉frontend/node_modules重新docker compose run --rm frontend npm install再docker compose restart frontend。報 Ruby 版本不符如Your Ruby version is x, but your Gemfile specified ~y說明鏡像過舊執(zhí)行docker compose build --pull重建。npm install 卡在某個包的 install script 上倉庫的.npmrc開了strict-allow-scripts需要先審查再用npm approve-scripts放行詳見 docs/development/development-environment/ 的 Troubleshooting 一節(jié)。改了代碼不生效本地代碼目錄是掛載進(jìn)容器的改動會自動生效、無需重啟容器但如果本地有config/database.yml殘留或frontend/package-lock.json被容器改過建議提交前git checkout還原掉。想推倒重來數(shù)據(jù)都在 Docker volume 里pgdata數(shù)據(jù)庫、bundlegems、tmp等停掉容器刪掉對應(yīng) volume 就是全新環(huán)境。日常開發(fā)速記看日志docker compose logs -f backend/docker compose logs frontend停服務(wù)docker compose downvolume 還在數(shù)據(jù)不丟進(jìn)后端容器調(diào) rubydocker compose exec backend rails c斷點調(diào)試binding.pry用docker attach openproject-backend-1掛進(jìn)容器看控制臺CTRLP, CTRLQ安全脫離跑測試先docker compose up -d backend-test再docker compose exec backend-test bundle exec rspec path/to/some_spec.rb跑完整開發(fā)文檔、代碼規(guī)范、測試指南docs/development/貢獻(xiàn)流程看 CONTRIBUTING.md前端代碼在 frontend/src/REST API 在 lib/api/到這里你的 OpenProject 開發(fā)環(huán)境就完整跑起來了。下一步建議隨便改一個工作包的展示文案看熱重載在前端里即時生效——能親眼看到改完即見后面寫功能就順了。如果想繼續(xù)深入docs/development/ 里的架構(gòu)說明和測試指南是官方最權(quán)威的路標(biāo)。【免費下載鏈接】openprojectOpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Gantt charts, time tracking, collaboration features, and more. Available on premises or in the cloud. ? Star us on GitHub項目地址: https://gitcode.com/GitHub_Trending/op/openproject創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考