Redmine 是一個靈活的開源專案管理和問題追蹤 Web 應用程式。它廣泛用於管理專案、追蹤錯誤以及處理任務和截止日期。 Redmine 使用 Ruby on Rails 開發,具有高度可自訂性,支援廣泛的團隊協作和專案組織功能。
Redmine 因其靈活性、客製化和開源特性而成為商業專案管理工具的流行替代品。
在本文中,我們將在 docker 容器上設定 redmine 以及資料庫伺服器、mysql 和 nginx 作為反向代理。
我們使用託管在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 檔案。
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中文網其他相關文章!