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 |