Skip to main content

Bản Docker

🇻🇳 (vi)

"Gcalls"

Hướng dẫn này được viết cho Ubuntu 20.04 LTS (Focal Fossa)

Yêu cầu:

  • RAM 8GB trở lên
  • CPU 6 Core trở lên
  • Dung lượng 2GB trở lên

Chuẩn bị:

I. Cài đặt phần mềm và tool cần thiết (bỏ qua bước này nếu đã cài mọi thứ trong danh sách chuẩn bị ở bước trên)

Thao tác qua Terminal của Ubuntu Trước tiên

```
sudo apt update
```

1. git

sudo apt install git-all
  • Kiểm tra git:
    git --version

2. curl và wget

sudo apt update
  • curl
    sudo apt install curl
  • wget
    sudo apt install software-properties-common apt-transport-https wget

3. nvm

Cài nvm bằng curl

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

Hoặc cài nvm bằng wget

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

Thêm vào bashrc

source ~/.bashrc
  • Kiểm tra nvm:
    nvm -v

4. node và npm

Cài đặt node v16

nvm install v16
  • Kiểm tra node và npm:
    node -v
    npm -v

5. Docker

  • Cập nhật package:
    sudo apt-get update
    sudo apt-get install
  • Thêm keyring và sourcelist:
    sudo mkdir -p /etc/apt/keyrings
    cd /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    echo \
    "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt-get update
  • Cài đặt Docker:
    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
  • Kiểm tra Docker:
    docker -v

6. docker-compose

  • Cài đặt dependency cần thiết (curl):
    sudo apt install curl
  • Cài đặt docker-compose:
    sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  • Cấp quyền executable cho docker-compose:
    sudo chmod +x /usr/local/bin/docker-compose
  • Kiểm tra docker-compose:
    docker-compose -v

II. Cài đặt source code

Có thể thao tác qua 1 trong các hướng sau:

  • Terminal
  • Giao diện và Terminal
  • Giao diện, Terminal và VS Code Terminal

Hướng dẫn dưới đây sẽ thao tác qua Ubuntu Terminal và VS Code Terminal

Mở terminal (Crl+Alt+T)

1. Chọn 1 thư mục để chứa source code (ví dụ: source_code)

Nếu chưa có thì tạo

mkdir source_code

2. Mở thư mục:

  • Truy cập thư mục đó:
    cd source_code

3. Tải repo về:

  • Khởi tạo:
    git init
    git clone https://gitlab.com/gcalls-single-node/devops-prod
  • Truy cập thư mục chứa source code devops_prod
    cd devops_prod
  • Cập nhật thông tin và kiểm tra branch:
    git fetch
    git branch
  • Chuyển branch:
    git checkout release
  • Kiểm tra branch:
    git branch

4. Khởi tạo docker:

Thoát khỏi thư mục devops-prod

cd ..

Trước tiên, đăng nhập vào GitlLab qua docker:

docker login https://registry.gitlab.com/gcalls-single-node
docker login https://registry.gitlab.com/gcalls-opensource

Nhập username và password cho tài khoản GitLab.

4.1 Keycloak (Quản lý đăng nhập/đăng ký tài khoản) và Logstash (Quản lý logging)

4.1.1 Tải repo về:
  • Tải repo về:
    git clone https://gitlab.com/gcalls-opensource/gcalls-community-version
  • Truy cập thư mục gcalls-community-version
    cd gcalls-community-version
  • Cập nhật thông tin:
    git fetch
  • Chuyển sang branch Development:
    git checkout Development
  • Kiểm tra branch:
    git branch
  • Chuyển sang branch mới (tùy chọn, sẽ kế thừa commit của branch trước đó):
    git checkout -b <branch của bạn>
4.1.2 khởi tạo docker:
  • Tại root / của thư mực, truy cập log-service/docker
    cd log-service/docker
  • Khởi tạo docker cho Logstash
    docker-compose up -d logstash
  • Tại root / của thư mục, truy cập iam-service
    cd iam-service
  • Khởi tạo docker cho Keycloak và Postgres
    docker-compose up -d
    UsernamePassword
    Postgreskeycloakkeycloak@2022
    Keycloakadmingadmin@2022
  • Kiểm tra Keycloak, Postgres và Logstash:
    docker logs -f keycloak --tail 1000
    Nếu thấy dòng chữ Http management interface listening on http://127.0.0.1:9990/management hoặc Admin console listening on http://127.0.0.1:9990 ở dưới cùng nghĩa là chạy thành công. Bấm Crl + C
    docker exec -it iam-service_postgres psql -U keycloak
    Nếu vào được nghĩa là thành công. Thoát ra khỏi container
    exit
    docker logs logstash -f
    Logstash đã được khởi tạo thành công nếu thông điệp "Successfully started Logstash API endpoint {:port=>9600}" hiện ra
4.1.3 Nhập dữ liệu vào Postgres cho Keycloak (Tùy chọn):

Chỉ thao tác qua giao diện và Ubuntu Terminal: Lưu ý dữ liệu của database keycloak trong Postgres phải hoàn toàn trống mới có thể nhập đầy đủ được.

  • Tạm dừng keycloak lại:
    docker stop keycloak
  • Truy cập vào docker của Postgres:
    docker exec -it iam-service_postgres_1 sh
  • Tạo 1 user mới:
    createuser -U keycloak --interactive
  • Điền tên và chọn y cho superuser:
    Enter name of role to add: postgres
    Shall the new role be a superuser? (y/n) y
  • Truy cập vào database mới bằng user mới:
    psql -U postgres
  • Xóa database keycloak
    drop database keycloak
  • Tạo lại database keycloak
    create database keycloak
  • Thoát ra khỏi psql và docker
    exit
    \q
  • Tạo 1 thư mục mới và truy cập vào nó:
    mkdir postgres
    cd postgres
  • Tải dữ liệu về
    wget -O dumpfile "https://gstatics.sgp1.digitaloceanspaces.com/contributer-setup-data/postgresBackup"
  • Nhập vào Postgres
    cat dumpfile | docker exec -i iam-service_postgres_1 psql -U keycloak

4.2 Database cho Gcalls Plus Webphone:

4.2.1 Cài đặt database:
  • Thoát khỏi thư mục gcalls-community-version
    cd ..
  • Truy cập devops-prod
    ```
    cd devops-prod
    ```
    Tại root / của thư mục devops-prod, chạy các câu lệnh sau
  • MongoDB:
    docker-compose -f dc-mongo0.yml up -d
    Tài khoản mặc định: | username | password | |----------|-------------| | gadmin | Gcalls2021devops |
  • CouchDB:
    docker-compose -f dc-couchdb.yml up -d
    Tài khoản mặc định: | username | password | |----------|-------------| | gadmin | GqMKXwfP73Kw7h6y |
  • Redis:
    ```
    docker-compose -f dc-redis.yml up -d
    ```
    Kiểm tra Database:
  • MongoDB:
    docker exec -it mongo0 mongo -u admin -p Gcalls2021devops
    Nếu vào được nghĩa là thành công. Thoát ra khỏi container
    exit
  • Couchdb:
    docker exec -it iam-service_postgres_1 psql -U keycloak
    Nếu vào được nghĩa là thành công. Thoát ra khỏi container
    exit
  • Redis:
    docker exec -it redis redis-cli
    Nếu vào được nghĩa là thành công. Thoát ra khỏi container
    exit
4.2.2 Nhập dữ liệu vào MongoDB cho Gcalls Plus Webphone (Tùy chọn)

Chỉ thao tác qua giao diện và Ubuntu Terminal:

  • Tạo 1 thư mục mới (ví dụ gcalls-example-db):
    mkdir gcalls-example-db
  • Truy cập thư mục:
    cd gcalls-example-db
  • Tải dữ liệu db về:
    wget -O  gcalls-example-db.zip --no-check-certificate "https://gstatics.sgp1.digitaloceanspaces.com/contributor-setup-data/myMongoDB.zip"
  • Kiểm tra file tải về:
    ls
  • Unzip file:
    unzip gcalls-example-db.zip
    • Nếu chưa có unzip thì cài đặt unzip
      sudo apt install unzip
  • Copy file vào container:
    docker cp GcallsCVDB2 mongo0:/dump
  • Nhập dữ liệu vào MongoDB:
    docker exec -i mongo0 /usr/bin/mongorestore --username admin --password Gcalls2021devops --db <database name> /dump/<đường dẫn tới thư mục chứa db cần nhập>
    docker exec -i mongo0 /usr/bin/mongorestore --username admin --password Gcalls2021devops --db access-service /dump/access-service
    docker exec -i mongo0 /usr/bin/mongorestore --username admin --password Gcalls2021devops --db access-service /dump/customer-service
    docker exec -i mongo0 /usr/bin/mongorestore --username admin --password Gcalls2021devops --db access-service /dump/integration-manager
    docker exec -i mongo0 /usr/bin/mongorestore --username admin --password Gcalls2021devops --db access-service /dump/record-service
    docker exec -i mongo0 /usr/bin/mongorestore --username admin --password Gcalls2021devops --db access-service /dump/third-party-service
    docker exec -i mongo0 /usr/bin/mongorestore --username admin --password Gcalls2021devops --db access-service /dump/user-service

4.3 Gcalls Plus Webphone:

Tại root / của thư mục devops-prod, chạy các câu lệnh sau

  • Backend:
    docker-compose -f dc-user.yml up -d
    docker-compose -f dc-customerService.yml up -d
    docker-compose -f dc-3rd.yml up -d
    docker-compose -f dc-record.yml up -d
    docker-compose -f dc-filter.yml up -d
  • Middle:
    docker-compose -f dc-access.yml up -d
    docker-compose -f dc-pbxlog.yml up -d
    docker-compose -f dc-mobile.yml up -d
    docker-compose -f dc-api.yml up -d
    docker-compose -f dc-integration.yml up -d
  • Frontend:
    docker-compose -f dc-webphone.yml up -d
    docker-compose -f dc-customerManagement.yml up -d

5. Kiểm tra docker:

  • Xem thông tin docker đang chạy:
    docker ps
  • Xem tình trạng của từng docker (chạy từng câu lệnh):
    docker logs <tên của docker container xem trong docker ps>
    docker logs user-service
    docker logs customer-service
    docker logs third-party-service
    docker logs record-service
    docker logs filter-service
    docker logs access-service
    docker logs pbxlog-service
    docker logs mobile-service
    docker logs api-management
    docker logs integration-manager
    docker logs webphone-service
    docker logs customer-management

III. Sử dụng Gcalls Plus Webphone

  • Truy cập vào localhost:4004 (frontend của Gcalls Plus Webphone) để sử dụng Gcalls Plus Webphone
  • Truy cập localhost:8080 (frontend của Keycloak) để quản lý tài khoản/ credential ở các callcenter | username | password | |----------|-------------| | admin | gadmin@2022 |

1. Nếu chưa nhập dữ liệu vào MongoDB và Postgres

2. Nếu đã nhập dữ liệu vào database

  • Dùng tài khoản dưới để đăng nhập: | email | password | callcenter | |----------|-------------|-------------| |gcalls.test@gmail.com| 12345678 | gcallstest |