樹莓派中Docker部署.Net Core 3.1 (一)
- 2020 年 4 月 8 日
- 筆記
一、背景
受疫情影響,已經在家強制事假一個月了,除了刷簡歷外就是在家學習,閑來無事,最近買了幾個樹莓派4B的板子回來,準備用樹莓派搭建個自動部署的平台和微服務示例,長話短說,節約時間,直接進入正題吧
二、樹莓派系統安裝
一開始我是在華為雲下的centos,後來發現各種問題(無法連接5Gwifi等),畢竟樹莓派是arm的cpu,很多東西不沒法下,網上找了找,發現Debian-Pi-Aarch64這款系統不錯,於是就下載了,有需要的自行下載,地址是:https://gitee.com/openfans-community/Debian-Pi-Aarch64/blob/master/README_zh.md
我選擇的是:基礎系統Plus++(無桌面加強版)
每個版本支持什麼請看上圖,系統下載好後,燒卡和寫入sd卡這一步就不說了,不清楚如何燒卡寫sd卡的請自行百度,寫完卡後記得在boot盤符里創建一個空的ssh文件,不帶後綴,然後找到wpa_supplicant.conf ,自行去掉注釋,然後修改成你的wifi密碼。
做完上面的步驟後,將卡插入樹莓派,通電啟動等待一分鐘左右吧,第一次使用系統會自動重啟三次,反正我沒管,就放那等了一分鐘左右的樣子,然後通過pc直接ssh連接過去了。
系統默認賬戶:pi ,默認密碼:raspberry,默認賬戶pi賬戶支持ssh登錄,root賬戶密碼請登陸後使用命令 「sudo passwd root」 執行設置密碼,同時可以修改pi的默認密碼,或使用命令 「sudo -i」 來切換到root用戶。接着開啟Web可視化管理界面、Docker服務、和CecOS CaaS 容器雲管理平台 登錄界面
Docker容器
手動開啟:systemctl start docker.service 手動停止:systemctl stop docker.service 啟用開機啟動:systemctl enable docker.service 禁用開機啟動:systemctl disable docker.service
CecOS CaaS容器雲(服務端口:8443)
手動開啟:systemctl start cecos-caas.service 手動停止:systemctl stop cecos-caas.service 啟用開機啟動:systemctl enable cecos-caas.service 禁用開機啟動:systemctl disable cecos-caas.service
WebGUI管理平台(服務端口:9090)
手動開啟:systemctl start cockpit.socket 手動停止:systemctl stop cockpit.socket 啟用開機啟動:systemctl enable cockpit.socket 禁用開機啟動:systemctl disable cockpit.socket
Web SSH客戶端(服務端口:4200)
手動開啟:systemctl start shellinabox.service 手動停止:systemctl stop shellinabox.service 啟用開機啟動:systemctl enable shellinabox.service 禁用開機啟動:systemctl disable shellinabox.service
注意:要啟用CecOS CaaS容器雲服務,必須要先啟用和啟動docker服務!!
因為啟動了WebGUI管理平台(服務端口:9090),所以個人認為沒必要在啟動Web SSH客戶端(服務端口:4200)了
相關賬號密碼
1.Web可視化管理界面 登錄地址 https://你樹莓派的IP地址:9090 說明:請使用系統默認賬戶pi登錄 2.CecOS CaaS 容器雲管理平台 登錄界面 登錄地址 https://你樹莓派的IP地址:8443 說明:默認管理賬戶 admin , 默認密碼:password 。請登錄後立即修改默認密碼!!
特別注意CecOS CaaS 容器雲管理平台的默認管理賬戶 admin , 默認密碼:password 。請登錄後立即修改默認密碼!
基本上這一步系統已經配置完成。
三、部署gitlab、Jenkins、Consul
由於樹莓派是arm的cpu,所以如果你想找需要的docker鏡像的話可以在 https://hub.docker.com/ 中查找,不過記得在Architectures中勾選ARM和ARM64,這樣查出來的鏡像文件即為ARM的鏡像了,千萬別下載x86的了,不然運行起來會報如下錯誤:
[91mstandard_init_linux.go:211: exec user process caused "exec format error"
先下ARM64為的gitlab,這裡我選擇的是ulm0/gitlab(搜索的時候記得勾選「ARM」 和「ARM64」)
點擊進入詳情,在左邊有docker下載鏡像的命令
docker pull ulm0/gitlab
docker 鏡像下載好後,我是直接使用命令進行安裝的,命令如下:
::安裝gitlab docker run -d --hostname gitlab --env GITLAB_OMNIBUS_CONFIG="external_url 'http://192.168.31.4/'; gitlab_rails['lfs_enabled'] = true;" -p 9443:443 -p 8081:8081 -p 220:220 --name gitlab --restart always -v /srv/gitlab/config:/etc/gitlab -v /srv/gitlab/logs:/var/log/gitlab -v /srv/gitlab/data:/var/opt/gitlab ulm0/gitlab
這裡的 192.168.31.4 IP是樹莓派宿主機的IP,就是你安裝好樹莓派系統後的ip地址,替換成你自己的IP即可,然後我將將gitlab的443、80和20端口都修改了,其中80和20端口的修改相對較麻煩,先使用命令查看目前的docker容器id
docker ps -a
然後使用docker exec -it c47cf283915f bash
進入到gitlab容器,進入容器後cd進入到/etc/gitlab,cd /etc/gitlab
,然後vi gitlab.rb
,然後按i,進入到編輯模式,修改如下幾處:
修改gitlab.rb
路徑: /opt/gitlab/etc/gitlab.rb,這個文件用於gitlab如何調用80和8080的服務等。
## GitLab URL ##! URL on which GitLab will be reachable. ##! For more details on configuring external_url see: ##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab external_url 'http://192.168.31.4:8081' ##192.168.31.4 IP為樹莓派宿主IP,自行修改自己IP ##! Note: During installation/upgrades, the value of the environment variable ##! EXTERNAL_URL will be used to populate/replace this value. ##! On AWS EC2 instances, we also attempt to fetch the public hostname/IP ##! address from AWS. For more details, see: ##! https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html # external_url 'GENERATED_EXTERNAL_URL'
################################################################################ ################################################################################ ## Configuration Settings for GitLab CE and EE ## ################################################################################ ################################################################################ ################################################################################ ## gitlab.yml configuration ##! Docs: https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/gitlab.yml.md ################################################################################ gitlab_rails['gitlab_ssh_host'] = '192.168.31.4' # gitlab_rails['gitlab_ssh_user'] = '' # gitlab_rails['time_zone'] = 'UTC'
### Wait for file system to be mounted ###! Docs: https://docs.gitlab.com/omnibus/settings/configuration.html#only-start-omnibus-gitlab-services-after-a-given-filesystem-is-mounted # high_availability['mountpoint'] = ["/var/opt/gitlab/git-data", "/var/opt/gitlab/gitlab-rails/shared"] ### GitLab Shell settings for GitLab gitlab_rails['gitlab_shell_ssh_port'] = 220 # gitlab_rails['gitlab_shell_git_timeout'] = 800
設置gitlab的發送郵箱
### GitLab email server settings ###! Docs: https://docs.gitlab.com/omnibus/settings/smtp.html ###! **Use smtp instead of sendmail/postfix.** gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.qq.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "發送郵件@qq.com" gitlab_rails['smtp_password'] = "發送郵件密碼" gitlab_rails['smtp_domain'] = "smtp.qq.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = true gitlab_rails['gitlab_email_from'] = "發送郵件@qq.com" ###! **Can be: 'none', 'peer', 'client_once', 'fail_if_no_peer_cert'** ###! Docs: http://api.rubyonrails.org/classes/ActionMailer/Base.html
修改gitlab 下的nginx
路徑: /var/opt/gitlab/nginx/conf/gitlab-http.conf,這個文件是gitlab內置的nginx的配置文件,裏面可以影響到nginx真實監聽端口號。
################################### ## configuration ## ################################### server { listen *:8081; ##這裡默認是80 server_name 192.168.31.4; ##這裡用樹莓派宿主的IP ## 其他的配置不變 ## .... ## .... ## 其他的配置不變 if ($http_host = "") { set $http_host_with_default "192.168.31.4:8081"; ## IP設置為樹莓派宿主IP }
修改gitlab後,運行gitlab-ctl reconfigure
使其修改後的配置生效。
最後等待幾分鐘後,局域網內用另一台電腦訪問 http://192.168.31.4:8081/ 即可訪問