2019-05-16更新
拍細拍細,標題編得有點亂,文章順序請以day0x的編號為主喔
因為GitLab實在太長了,會分2天po
上集:基本使用 Sameersbn大神的GitLab Image
下集:其他設定,例如:SSL加密、備份、Issue Trackers…
本篇主要參考:
一樣接著之前的ubuntu的vm來玩即可,預設要裝docker-compose、要有pirvate registry
這邊就用艦長大大力推的sameersbn大神做的image,因為…
$ docker pull sameersbn/gitlab:latest
# 這個yml檔有150行,蠻多環境變數可設定的
# 會先跑redis(一種in-memory的key-value database,類似快取的角色)、postgresql(兩大開源RDB)
$ wget https://raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.yml
$ apt-get install pwgen
$ pwgen -Bsv1 64 # 產生密碼 給 GITLAB_SECRETS_DB_KEY_BASE
# 填完下面3個密碼,如果你只是想測試,其他不用設就能建成功了
# GITLAB_SECRETS_OTP_KEY_BASE # 用來加密 2FA secrets in the database
# GITLAB_SECRETS_DB_KEY_BASE # 用來作加密CI secret variables
# GITLAB_SECRETS_SECRET_KEY_BASE # 用來做password reset links
$ docker-compose up # GitLab跑起來~
docker-compose超方便的,
簡單的說就是設定好docker-compose.yml,再docker-compose up服務就真的起來了!!
gitlab的使用:
再到瀏覽器上gitlab,http://localhost:10080
重設密碼後,管理者帳號是 root
可以再好好看 docker-compose.yml 的環境變數
因為gitlab 8.0後就整合gitlab ci了
再來就是上網爬文,看你的開發環境的gitlab ci的yml檔怎麼寫啦~
等我試成功再來分享(dotnet core + angular)
等試成功再來補前端測試、後端測試
實際用docker-compose.yml就好了,這裡只是學一下docker run
https://github.com/sameersbn/docker-gitlab
下載 docker-compose.yml
看yaml檔可發現,會起3個service:
redis、postgresql、gitlab
補充:用docker run手動執行,學一下大神的「手路」
postgresql: gitlab 要用的 database(gitlab也能用mysql)
$ docker run --name gitlab-postgresql -d \
--env 'DB_NAME=gitlabhq_production' \
--env 'DB_USER=gitlab' --env 'DB_PASS=password' \
--env 'DB_EXTENSION=pg_trgm' \
--volume /srv/docker/gitlab/postgresql:/var/lib/postgresql \
sameersbn/postgresql:10
$ docker run --name gitlab-redis -d \
--volume /srv/docker/gitlab/redis:/var/lib/redis \
sameersbn/redis:4.0.9-1
$ docker run --name gitlab -d \
--link gitlab-postgresql:postgresql --link gitlab-redis:redisio \
--publish 10022:22 --publish 10080:80 \
--env 'GITLAB_PORT=10080' --env 'GITLAB_SSH_PORT=10022' \
--env 'GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string' \
--env 'GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alpha-numeric-string' \
--env 'GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-string' \
--volume /srv/docker/gitlab/gitlab:/home/git/data \
sameersbn/gitlab:11.2.3
# --link讓gitlab的網路可連到其他2個container
# 至於 DB_NAME、DB_USER、DB_PASS會從postgresql container取得(神奇呢)
# 好像是要給,例如: --env 'DB_NAME=gitlabhq_production'
也可以連到外部的PostgreSQL server,假設ip是192.168.1.100
先不要急著開browser…
$ CREATE ROLE gitlab with LOGIN CREATEDB PASSWORD 'password';
$ CREATE DATABASE gitlabhq_production;
$ GRANT ALL PRIVILEGES ON DATABASE gitlabhq_production to gitlab;
$ docker run --name gitlab -d \
--env 'DB_ADAPTER=postgresql' --env 'DB_HOST=192.168.1.100' \
--env 'DB_NAME=gitlabhq_production' \
--env 'DB_USER=gitlab' --env 'DB_PASS=password' \
--volume /srv/docker/gitlab/gitlab:/home/git/data \
sameersbn/gitlab:11.2.3
大象跟海豚是死對頭,好像是各有優缺點,有競爭是好事,這樣Oracle授權金才不會收太貴?
$ docker run --name gitlab-mysql -d \
--env 'DB_NAME=gitlabhq_production' \
--env 'DB_USER=gitlab' --env 'DB_PASS=password' \
--volume /srv/docker/gitlab/mysql:/var/lib/mysql \ # 前面是host : 後面是contianer
sameersbn/mysql:5.7.22-1 # 想必這image也是大神調效過的
$ docker run --name gitlab -d \
--link gitlab-mysql:mysql --link gitlab-redis:redisio \
--publish 10022:22 --publish 10080:80 \
--env 'GITLAB_PORT=10080' --env 'GITLAB_SSH_PORT=10022' \
--env 'GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string' \
--env 'GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alpha-numeric-string' \
--env 'GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-string' \
--env 'DB_NAME=gitlabhq_production'
--env 'DB_USER=gitlab'
--env 'DBPASS=password'
# 寄信,此image預設用gmail
--env 'SMTP_USER=USER@gmail.com' --env 'SMTP_PASS=PASSWORD' \
# 回信
# sub-addressing 可用於過濾,或一次性EMAIL地址,因為有特殊符號,也有可能被擋掉
--env 'IMAP_USER=USER@gmail.com' --env 'IMAP_PASS=PASSWORD' \
--env 'GITLAB_INCOMING_EMAIL_ADDRESS=USER+%{key}@gmail.com' \
--volume /srv/docker/gitlab/gitlab:/home/git/data \
sameersbn/gitlab:11.2.3
CREATE USER 'gitlab'@'%.%.%.%' IDENTIFIED BY 'password';
CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8mb4` COLLATE `utf8_unicode_ci`;
GRANT ALL PRIVILEGES ON `gitlabhq_production`.* TO 'gitlab'@'%.%.%.%';
# 好像在MySQL的utf8是有bug的,而且因為技術債保留utf8,網路建議用utf8mb4
# 至於ci好像是大小寫無關的意思
$ docker run --name gitlab -d \
--env 'DB_ADAPTER=mysql2' --env 'DB_HOST=192.168.1.100' \
--env 'DB_NAME=gitlabhq_production' \
--env 'DB_USER=gitlab' --env 'DB_PASS=password' \
--volume /srv/docker/gitlab/gitlab:/home/git/data \
sameersbn/gitlab:11.2.3
$ docker run --name gitlab -it --rm \
--env 'REDIS_HOST=192.168.1.100' --env 'REDIS_PORT=6379' \
sameersbn/gitlab:11.2.3
呼,今天就先這到這吧~
1、這幾天使用docker images相對單純,確也最實用的
2、在前幾季的Angular讀書會,Alan Tai大大分享CI Pipeline
[S03E08] CI Pipeline for Angular
https://www.youtube.com/watch?v=YZC0HyZdV5o&list=PL9LUW6O9WZqgUMHwDsKQf3prtqVvjGZ6S&index=26
以前都看不懂,經過鐵人賽的學習後,感覺看得懂了
再回去看幾次,可能再寫一篇
3、k8s的進度…
在 master 裡下 kubeadm init 已經成功了,晚上再來試試 node join。