翻譯:Docker方式安裝redmine

2020-08-14 19:09:35

原文見: https://docs.docker.com/samples/library/redmine/
簡單翻譯整理。

1. 用SQLite3執行Redmine

這是最簡單的設定; 剛剛執行redmine。

$ docker run -d --name some-redmine redmine

注意:不適合多使用者生產使用(見redmine wiki 中說明)

2. 使用數據庫容器執行Redmine

建議使用數據庫伺服器執行Redmine。

2.1. 啓動數據庫容器

  • PostgreSQL的
$ docker run -d --name some-postgres --network some-network -e POSTGRES_PASSWORD=secret -e POSTGRES_USER=redmine postgres
  • MySQL的(替代-e REDMINE_DB_POSTGRES=some-postgres與-e REDMINE_DB_MYSQL=some-mysql執行管理平臺時)
$ docker run -d --name some-mysql --network some-network -e MYSQL_USER=redmine -e MYSQL_PASSWORD=secret -e MYSQL_DATABASE=redmine -e MYSQL_RANDOM_ROOT_PASSWORD=1 mysql:5.7

2.2. 啓動redmine

$ docker run -d --name some-redmine --network some-network -e REDMINE_DB_POSTGRES=some-postgres -e REDMINE_DB_USERNAME=redmine -e REDMINE_DB_PASSWORD=secret redmine

3. 通過docker stack deploy或docker-compose方式執行

一個名爲stack.yml 的redmine例子:

version: '3.1'  # 指定docker-compose.yml 檔案的寫法格式,需要和docker版本對應上

services: # 設定多個容器的集合
  redmine:
    image: redmine       # 指定服務所使用的映象
    restart: always
    ports:               # 指定對外暴露的埠
      - 8080:3000
    environment:
      REDMINE_DB_MYSQL: db
      REDMINE_DB_PASSWORD: example

  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: redmine

執行docker stack deploy -c stack.yml redmine(或docker-compose -f stack.yml up),等待它完全初始化,存取:
http://swarm-ip:8080,http://localhost:8080或http://host-ip:8080(如適用)。

替代Web伺服器
此儲存庫中的其他標記(如passenger使用的–links標記rails s)使用相同的環境和使用WEBrick()的預設標記,而是爲您提供不同的Web和應用程式伺服器的選項。passenger使用Phusion Passenger。tini用於收割殭屍。

4. 存取應用程式

目前,上遊的預設使用者和密碼是admin / admin(登錄到應用程式)。

4.1. 儲存數據的位置

重要說明:有幾種方法可以儲存在Docker容器中執行的應用程式使用的數據。我們鼓勵redmine映象使用者熟悉可用選項,包括:

讓Docker 通過使用自己的內部卷管理將檔案寫入主機系統上的磁碟來管理檔案的儲存。這是預設設定,對使用者來說簡單且相當透明。缺點是檔案可能很難找到直接在主機系統上執行的工具和應用程式,即外部容器。
在主機系統(容器外部)上建立一個數據目錄,並將其掛載到容器內可見的目錄中。這將數據庫檔案放置在主機系統上的已知位置,並使主機系統上的工具和應用程式可以輕鬆存取這些檔案。缺點是使用者需要確保目錄存在,並且例如正確設定了主機系統上的目錄許可權和其他安全機制 機製。
Docker文件是瞭解不同儲存選項和變體的一個很好的起點,並且有多個部落格和論壇貼文在這個領域進行討論和提供建議。我們將簡單地顯示上面後一個選項的基本過程:

在主機系統上的適當捲上建立數據目錄,例如/my/own/datadir。
redmine像這樣啓動你的容器:

$ docker run -d --name some-redmine -v /my/own/datadir:/usr/src/redmine/files --link some-postgres:postgres redmine
-v /my/own/datadir:/usr/src/redmine/files命令的一部分/my/own/datadir將底層主機系統中的目錄安裝在/usr/src/redmine/files容器內,Redmine將儲存上載的檔案。

4.2. 埠對映

如果您希望能夠在沒有容器IP的情況下從主機存取範例,則可以使用標準埠對映。只需新增-p 3000:3000到docker run參數,然後存取或者http://localhost:3000或http://host-ip:3000在瀏覽器中。

4.3. 環境變數

啓動redmine映像時,可以通過在docker run命令列上傳遞一個或多個環境變數來調整範例的設定。

REDMINE_DB_MYSQL 要麼 REDMINE_DB_POSTGRES
這兩個變數允許您分別設定MySQL或PostgreSQL主機的主機名或IP地址。這些值是互斥的,因此如果兩者都設定,則它是未定義的行爲。如果兩個變數都未設定,則映象將回退到使用SQLite。

REDMINE_DB_PORT
此變數允許您指定自定義數據庫連線埠。如果未指定,它將預設爲常規連線埠:MySQL爲3306,PostgreSQL爲5432,SQLite爲空字串。

REDMINE_DB_USERNAME
此變數設定Redmine和任何rake任務用於連線到指定數據庫的使用者。如果未指定,則預設root爲MySQL,postgresPostgreSQL或redmineSQLite。

REDMINE_DB_PASSWORD
此變數設定指定使用者在連線數據庫時將使用的密碼。沒有預設值。

REDMINE_DB_DATABASE
此變數設定Redmine將在指定數據庫伺服器中使用的數據庫。如果沒有指定,它將預設redmine爲MySQL,REDMINE_DB_USERNAMEPostgreSQL或sqlite/redmine.dbSQLite的值。

REDMINE_DB_ENCODING
此變數設定連線到數據庫伺服器時要使用的字元編碼。如果未指定,它將使用預設的mysql2庫(UTF-8)用於MySQL,utf8PostgreSQL或utf8SQLite。

REDMINE_NO_DB_MIGRATE
此變數允許您控制是否rake db:migrate在容器啓動時執行。只需將變數設定爲非空字串1,true並且遷移指令碼不會自動在容器啓動時執行。

db:migrate如果你用預設值以外的東西開始你的形象也將無法執行CMD,像bash。有關docker-entrypoint.sh詳細資訊,請參閱映象中的當前內容

REDMINE_PLUGINS_MIGRATE
此變數允許您控制是否rake redmine:plugins:migrate在容器啓動時執行。只需設定變數像一個非空字串1或true與遷移指令碼將在每個容器啓動自動執行。它將在之後執行db:migrate。

redmine:plugins:migrate如果你用預設值以外的東西開始你的形象將不會執行CMD,喜歡bash。有關docker-entrypoint.sh詳細資訊,請參閱映象中的當前內容

REDMINE_SECRET_KEY_BASE
此變數用於建立初始值config/secrets.yml並設定該secret_key_base值,「Rails使用該值來編碼儲存對談數據的cookie,從而防止其被篡改。生成新的祕密令牌會在重新啓動「(對談儲存)後使所有現有對談無效。如果您未設定此變數或提供secrets.yml將使用的變數生成rake generate_secret_token。

4.3. Docker的祕密

作爲通過環境變數傳遞敏感資訊的替代方法,_FILE可以將其附加到先前列出的環境變數,從而使初始化指令碼從容器中存在的檔案載入這些變數的值。特別是,這可以用於從儲存在/run/secrets/<secret_name>檔案中的Docker機密載入密碼。例如:

$ docker run -d --name some-redmine -e REDMINE_DB_MYSQL_FILE=/run/secrets/mysql-host -e REDMINE_DB_PASSWORD_FILE=/run/secrets/mysql-root redmine:tag
目前,這僅支援REDMINE_DB_MYSQL,REDMINE_DB_POSTGRES,REDMINE_DB_PORT,REDMINE_DB_USERNAME,REDMINE_DB_PASSWORD,REDMINE_DB_DATABASE,REDMINE_DB_ENCODING,和REDMINE_SECRET_KEY_BASE。

4.4. 映象變體

該redmine映象有許多種,每一個設計用於特定的使用情況。

redmine:
這是事實上的形象。如果您不確定您的需求是什麼,您可能想要使用這個。它被設計爲既可以用作丟棄容器(安裝原始碼並啓動容器來啓動應用程式),也可以用作構建其他映象的基礎。

redmine:-alpine
該映象是基於流行的高山Linux專案,可用的alpine官方映象。Alpine Linux比大多數分發基礎映象(約5MB)小得多,因此通常會導致更小的映象。

當最終映象尺寸儘可能小時,強烈建議使用此變體。需要注意的主要注意事項是它確實使用musl libc而不是glibc和朋友,因此某些軟體可能會遇到問題,具體取決於其libc要求的深度。但是,大多數軟體都沒有這個問題,因此這種變體通常是一個非常安全的選擇。請參閱此駭客新聞評論主題,以獲取有關可能出現的問題的更多討論以及使用基於Alpine的映象的一些比較/比較。

爲了最小化映象大小,在基於Alpine的映象中包含其他相關工具(例如git或bash)並不常見。使用此映象作爲基礎,在您自己的Dockerfile中新增所需的內容(如果您不熟悉,請參閱alpine映象說明以獲取如何安裝軟體包的範例)。