架設 Nexus 跟 Docker Registry

既然程式已經編譯打包好了, 那就需要有個地方交付儲存,
以前是交付 Jar, 但現在都是用 Docker 了, 所以我們交付的完成品就是 Docker Image,
那我們交付的儲存庫一種是用 docker registry 這個官方有出, 一些大公司有做開源也可以直接拿來用,
不過我們本來就有用 Nexus 了, 那直接用 Nexus 來管 docker registry 當然是最方便的不二人選啊.

安裝方式分兩種, 一種手動 一種用 Ansible 安裝 (後面講 Ansible 入門 再說明 Ansible)
先介紹手動的, 後面有介紹 Ansible 版, 但其實安裝步驟是一樣的, 最後再說明服務啟動後需要上介面做什麼設定.

手動安裝

手動初始化

請參考 如何初始化 CentOS

建立&啟動

使用 docker-compose 建立

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
sudo mkdir -p /usr/local/lab
sudo chown -R centos /usr/local/lab
mkdir -p /usr/local/lab/nexus/data && chmod 777 data
cd /usr/local/lab/nexus

cat << 'EOF' > docker-compose.yml
version: '3.7'
services:
nexus:
image: 'sonatype/nexus3'
container_name: 'nexus'
restart: always
ports:
- '80:8081'
- '15000:15000'
volumes:
- '/etc/timezone:/etc/timezone'
- '/etc/localtime:/etc/localtime'
- '/usr/local/lab/nexus/data:/nexus-data'
EOF

sudo docker-compose up -d

Ansible 安裝

首先要透過 Ansible 來安裝避必須透過 git submodule 來關聯到 ansible 專案, 因為那邊有機器初始化腳本可以一併處理

執行 ansible-playbook

透過以下指令初始化

1
ansible-playbook -i inventory ansible/playbooks/initial.yml --limit 'group_nexus' -vv

初始化指令執行完後會進行重開機
重複執行沒有關係, 初始化完成後會寫一個用戶變數, 下次執行發現已執行過了就不會再執行重開機指令

接著進行安裝

1
ansible-playbook -i inventory ansible/roles/nexus/tasks/main.yml --limit 'group_nexus' -vv

結束

Git submodule 處理

增加子模組做關聯

1
2
3
4
git submodule add ../../customer-service/ansible.git
git status
git commit -a -m "first commit with submodule ansible"
git push

子模組有更新

1
2
3
4
git submodule update --remote
git status
git commit -a -m "update with submodule ansible"
git push

系統設定

登入

admin / admin123

Create Blob Stores

Imgur
Imgur
Imgur
Imgur

Create Repositories

管理齒輪 -> Repository -> Repositories -> Create repository -> docker (hosted)
Name= docker-csnt
HTTP= 15000
不用 https 是因為我們前面有架設 Nginx
Imgur
Imgur
Imgur
Imgur

Create Role for image push

Imgur
Imgur
Imgur

Create User for image push

Imgur
Imgur
Imgur

Create Role for image pull (read only)

Imgur

Create User for image pull (read only)

Imgur

創用 CC 授權條款
SAM的程式筆記 朱尚禮製作,以創用CC 姓名標示-非商業性-相同方式分享 4.0 國際 授權條款釋出。