運維篇本篇開始要實施項目的運維部署,讓前面所做的工作最終落地。我們使用的是阿裡雲服務器,該服務器上已經使用 docekr 部署瞭一套基礎的服務環境,可參考 基於 traefik v2 的本地開發、部署一致環境方案,現在就需要將前端項目、Phabricator 系統部署在這臺服務器上面來供用戶訪問使用。針對兩個項目分別進行規劃:由於服務器是 docker 環境,因此我們隻需要做好每一個項目的編排文件就可以搭建好項目的運行時環境。網站端我們網站的實現是基於vuejs 的 nuxtjs 框架,所以需要一套 nodejs 服務環境,它由 Dockerfile + docker-compose 組成。Dockerfile 內容如下FROM node:10-alpine
# 設置鏡像作者
MAINTAINER baisheng <[email protected]>
# 設置時區
RUN sh -c "echo 'Asia/Shanghai' > /etc/timezone"
# 使用 aliyun 倉庫加速
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
# 以下軟件根據實際情況選擇是否安裝
#RUN apk add –no-cache make gcc g++ python git
# Nodejs 服務的淘寶源配置
RUN npm config set registry https://registry.npm.taobao.org && \
npm config set disturl https://npm.taobao.org/dist && \
npm config set electron_mirror https://npm.taobao.org/mirrors/electron/ && \
npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/ && \
npm config set phantomjs_cdnurl https://npm.taobao.org/mirrors/phantomjs/
WORKDIR /app
COPY package.json .
ENV HOST=0.0.0.0
RUN yarn –frozen-lockfile –non-interactive
COPY . /app
RUN yarn build
EXPOSE 3000
CMD ["yarn", "start"]
這個文件中基於 node 官方的 alpine 鏡像,由於需要在鏡像內做構建工作,設置 npm 源為國內源可以加速構建docker-compose.yml 文件內容如下version: '3.5'
services:
website:
build: .
restart: 'unless-stopped'
networks:
– traefik
– default
expose:
– 3000
labels:
– "traefik.enable=true"
– "traefik.http.routers.website.entrypoints=web, web-secure"
– "traefik.http.routers.website.tls=true"
– "traefik.http.routers.website.rule=Host(`caixie.top`, `www.caixie.top`, `caixie.ltd`)"
– "traefik.http.routers.app_https.service=website"
– "traefik.docker.network=traefik"
networks:
traefik:
external: true
這個編排文件主要是配置好 Dockerfile 的構建以及讓 traefik 去識別我們新開啟的服務,讓反向代理能夠工作。文件配置好後,執行以下命令:docker-compose up -d –build
執行過程及結果如下:# 執行結果
Building website
Step 1/13 : FROM node:10-alpine
—> 288d2f688643
Step 2/13 : MAINTAINER baisheng <[email protected]>
—> Using cache
—> 43f7cce00704
Step 3/13 : RUN sh -c "echo 'Asia/Shanghai' > /etc/timezone"
—> Using cache
—> 38ae5055ef52
Step 4/13 : RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
—> Using cache
—> 4463d3e3f02a
Step 5/13 : RUN npm config set registry https://registry.npm.taobao.org && npm config set disturl https://npm.taobao.org/dist && npm config set electron_mirror https://npm.taobao.org/mirrors/electron/ && npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/ && npm config set phantomjs_cdnurl https://npm.taobao.org/mirrors/phantomjs/
—> Using cache
—> b2df0e507af0
Step 6/13 : WORKDIR /app
—> Using cache
—> b4311163db84
Step 7/13 : COPY package.json .
—> Using cache
—> 8bebbb69624b
Step 8/13 : ENV HOST=0.0.0.0
—> Using cache
—> 9f392ae2670a
Step 9/13 : RUN yarn –frozen-lockfile –non-interactive
—> Using cache
—> 8c3c4910913c
Step 10/13 : COPY . /app
—> Using cache
—> ac58285a3548
Step 11/13 : RUN yarn build
—> Using cache
—> 740bc2148595
Step 12/13 : EXPOSE 80
—> Using cache
—> 081db1e15be8
Step 13/13 : CMD ["yarn", "start"]
—> Using cache
—> 8b86964361c6
Successfully built 8b86964361c6
Successfully tagged caixie-website-nuxtjs_website:latest
caixie-website-nuxtjs_website_1 is up-to-date
Ok,完成後,我們來驗證一下,首先登錄 traefik 的管理端看一下反向代理是否識別瞭服務,工作是否正常。treafik dashboard我們可以看到已經正常識別服務,瀏覽器測試訪問也一切正常,網站端部署完畢。Phabricator官方SaaS版本 https://www.phacility.com/phabricator/社區開源倉庫 https://github.com/phacility/phabricator/Bitnami 容器倉庫 https://github.com/bitnami/bitnami-docker-phabricator因為當前沒有特別的定制需求,我們直接用的是 Bitnami 容器方案,目前社區最新版是 《2020.5.0-ol-7-r2 release》 Bitnami 會定期從官方倉庫中獲取版本,並進行容器封裝采用 bitnami 的 docker-compose.yml 配置如下version: '3'
services:
works:
image: jwilder/nginx-proxy:alpine
depends_on:
– phabricator
volumes:
– /var/run/docker.sock:/tmp/docker.sock:ro
# – ./nginx/certs:/etc/nginx/certs:ro
– ./nginx/vhost.d:/etc/nginx/vhost.d
– ./nginx/html:/usr/share/nginx/html
expose:
– 80
labels:
– "traefik.docker.network=traefik"
– "traefik.enable=true"
– "traefik.http.routers.works.tls=true"
– "traefik.http.routers.works_https.service=works"
– "traefik.http.routers.works.entryPoints=web, web-secure"
– "traefik.http.routers.works.rule=Host(`w.caixie.top`)"
networks:
– traefik
– phabricator-tier
mariadb:
image: 'bitnami/mariadb'
networks:
– phabricator-tier
environment:
– ALLOW_EMPTY_PASSWORD=yes
– MARIADB_EXTRA_FLAGS=–local-infile=0
volumes:
– 'mariadb_data:/bitnami'
phabricator:
image: 'bitnami/phabricator:latest'
ports:
– '8080:80'
volumes:
– 'phabricator_data:/bitnami'
– './extensions:/opt/bitnami/phabricator/src/extensions'
depends_on:
– mariadb
environment:
– PHABRICATOR_HOST=w.caixie.top
– VIRTUAL_HOST=w.caixie.top
– VIRTUAL_PORT=80
networks:
– phabricator-tier
volumes:
mariadb_data:
driver: local
phabricator_data:
driver: local
networks:
phabricator-tier:
traefik:
external: true
對程序進行漢化采用社區網友提供的漢化補丁,下載倉庫中指定的 PhabricatorSimplifiedChineseTranslation.php 文件,將其放置在 extensions 目錄中後,啟動應用 docker-compose up -d啟動後訪問 w.caixie.top 輸入默認用戶名 user密碼 bitnami1然後可以在 user/config 中進行界面語言配置、密碼修改等操作界面語言配置由於 phabricator 默認的開放規則需要系統用戶可見,但我們是需要開放一些內容可以讓來訪者看得到,達到服務和宣傳的作用。現在開啟公開可見的策略:策略配置最後Phabricator 的搭建隻是第一步,與現有倉庫集成、與CI 集成等內容會在業務服務的工作中進行整合。請大傢關註後續的運營篇。–EOF
本文出自快速备案,转载时请注明出处及相应链接。