Redmine 是一個靈活的開源專案管理和問題追蹤 Web 應用程式。它廣泛用於管理專案、追蹤錯誤以及處理任務和截止日期。 Redmine 使用 Ruby on Rails 開發,具有高度可自訂性,支援廣泛的團隊協作和專案組織功能。
Redmine 因其靈活性、客製化和開源特性而成為商業專案管理工具的流行替代品。
在本文中,我們將在 docker 容器上設定 redmine 以及資料庫伺服器、mysql 和 nginx 作為反向代理。
安裝 Docker
我們使用託管在AWS EC2上的ubuntu伺服器以及docker官方的安裝指南。
# Add Docker's official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # Add the repository to Apt sources: echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update
我們使用最新版本的 docker 以及 docker compose。
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
好了,docker 安裝完畢,接下來我們需要設定我們的使用者(ubuntu)可以直接存取 docker,無需 sudo。
sudo groupadd docker sudo usermod -aG docker $USER
然後登出並再次登入我們的伺服器。 Docker 已準備就緒!
我們可以使用下面的命令在伺服器重新啟動時啟動 docker 容器。
sudo systemctl enable docker.service sudo systemctl enable containerd.service
docker 容器目前就足夠了。
建立 docker compose 文件
我們將建立一個 docker compose 檔案。
nano docker-compose.yaml
並貼上此 yaml 程式碼。
version: '3.1' services: nginx: # we use the latest of nginx as base image: nginx:latest restart: always # we expose port 80 and 443 to the public as our reverse proxy ports: - "80:80" - "443:443" volumes: # we link volume from host for nginx configuration - './nginx.conf:/etc/nginx/conf.d/nginx.conf' # we link volume from host for nginx certs - './certs:/etc/nginx/certs' # we link also timezone from the host - '/etc/localtime:/etc/localtime:ro' - '/etc/timezone:/etc/timezone:ro' depends_on: # we will wait until server redmine is ready - redmine redmine: # we use redmine from dockerhub as base image: redmine restart: always volumes: # we link redmine data to our local storage, so it will persistent when # the service redmine restarted - 'redmine_data:/usr/src/redmine/files' # we link redmine plugin also from the host - '/home/bkn/redmine_plugins:/usr/src/redmine/plugins' # we link also timezone from the host - '/etc/localtime:/etc/localtime:ro' - '/etc/timezone:/etc/timezone:ro' # we don't expose port on this service because nginx service will do # default port redmine expose internally is 3000 #ports: #- 3000:3000 #- 444:3000 environment: # we create some env for redmine REDMINE_DB_MYSQL: db REDMINE_DB_PORT: 3306 REDMINE_DB_DATABASE: redmine_db REDMINE_DB_USERNAME: redmine REDMINE_DB_PASSWORD: my_p@ssword REDMINE_SECRET_KEY_BASE: G75eddsecretkey # we will wait until db service is ready depends_on: - db db: # we use mysql server for redmine database image: mysql:8.0 restart: always volumes: # we also link the database storage with volume we created below - 'mysql_data:/var/lib/mysql' environment: # we create some env for mysql MYSQL_USER: redmine MYSQL_PASSWORD: my_p@ssword MYSQL_RANDOM_ROOT_PASSWORD: 1 MYSQL_ROOT_PASSWORD: JRFFHT534rth4u3!@# MYSQL_DATABASE: redmine_db volumes: # we create two volume used by redmine and our database mysql_data: driver: local redmine_data: driver: local
接下來,我們建立 nginx 設定文件,與 docker-compose 檔案位於同一資料夾
nano nginx/nginx.conf
server { listen 80; server_name proman.withenri.tech; location / { proxy_pass http://henri_redmine_1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } server { listen 443 ssl; server_name proman.withenri.tech; ssl_certificate /etc/nginx/certs/withenri.tech_chained.crt; ssl_certificate_key /etc/nginx/certs/withenri.tech.key; location / { proxy_pass http://henri_redmine_1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
並建立名為 certs 的資料夾,然後將我們的憑證放在那裡。
建立容器
讓我們使用指令來執行我們的 docker compose 檔案
docker-compose up -d
當我們執行這個 docker compose 檔案時,會自動建立一個網路並連結這些網路中的三個服務(nginx、redmine、db)。
我們可以使用指令檢查我們的容器:
docker ps -a
然後在我們的瀏覽器上使用連接埠 80 和連接埠 443 透過 https 連接測試 redmine 應用程式。使用使用者「admin」和密碼「admin」登入我們的 redmine 應用程式。
這篇文章和我們直接安裝在vps上基本上是一樣的,參考這篇文章。
希望這篇文章對您有幫助!
以上是在 Docker 容器上設定 Redmine的詳細內容。更多資訊請關注PHP中文網其他相關文章!

掌握添加MySQL用戶的方法對於數據庫管理員和開發者至關重要,因為它確保數據庫的安全性和訪問控制。 1)使用CREATEUSER命令創建新用戶,2)通過GRANT命令分配權限,3)使用FLUSHPRIVILEGES確保權限生效,4)定期審計和清理用戶賬戶以維護性能和安全。

chosecharforfixed-lengthdata,varcharforvariable-lengthdata,andtextforlargetextfield.1)chariseffity forconsistent-lengthdatalikecodes.2)varcharsuitsvariable-lengthdatalikenames,ballancingflexibilitibility andperformance.3)

在MySQL中處理字符串數據類型和索引的最佳實踐包括:1)選擇合適的字符串類型,如CHAR用於固定長度,VARCHAR用於可變長度,TEXT用於大文本;2)謹慎索引,避免過度索引,針對常用查詢創建索引;3)使用前綴索引和全文索引優化長字符串搜索;4)定期監控和優化索引,保持索引小巧高效。通過這些方法,可以在讀取和寫入性能之間取得平衡,提升數據庫效率。

ToaddauserremotelytoMySQL,followthesesteps:1)ConnecttoMySQLasroot,2)Createanewuserwithremoteaccess,3)Grantnecessaryprivileges,and4)Flushprivileges.BecautiousofsecurityrisksbylimitingprivilegesandaccesstospecificIPs,ensuringstrongpasswords,andmonitori

tostorestringsefliceflicyInmySql,ChooSetherightDataTypeBasedyOrneOrneEds:1)USEcharforFixed-LengthStstringStringStringSlikeCountryCodes.2)UseVarcharforvariable-lengtthslikenames.3)USETEXTCONTENT.3)

mysqloffersvariouscharactersetsforstringdatatypes:1)latin1 forwesterneuropeanlanguages,2)utf8 formultingualsupport,3)utf8mb4f OREXTEDENDENDENENICODECLUDINGEMOJIS,4)UCS2FORIXED-WIDTHENCODING,5)assiiforbasiclatin.ChoosideStherightStetSetensensersdaintegrity

流式傳輸BLOB確實比直接存儲更好,因為它能減少內存使用和提高性能。 1)通過逐步讀取和處理文件,避免了數據庫膨脹和性能下降。 2)流式傳輸需要更複雜的代碼邏輯,且可能增加I/O操作次數。

mySqlStringTypesimpactStorageAndPerformanCeaseAsfollows:1)長度,始終使用theSamestoragespace,whatcanbefasterbutlessspace-felfficity.2)varCharisvariable varcharisvariable length,morespace-morespace-morespace-effficitybuteftife buteftife butfority butfority textifforlyslower.3)


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

記事本++7.3.1
好用且免費的程式碼編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境