Odoo -г Docker-с ажилууллах

  • Odoo -н тухай
  • Bitnami-г ашиглан Bitnami-docker-odoo - ажилууллах
  • docker-compose - коммандын талаар
  • Docker Volume & persistent volume claim талаар
  • Docker-compouse ажилууллах

Odoo-н тухайд

Нээлттэй эх дээрх бизнес апплкэйшн ERP нь вэб дээр бүрэн ажиллах, ѳѳр системтэй интеграци хийх боломж, l10n зэргийг шийдсэн цогц апплкэйшн юм.

Bitnami-н тухайд

Нээлттэй эх дээр суурьтай OSS софтвейрыг хялбар аргаар хүссэн орчин дээр суулган ажилуулна. Клоуд хостинг хийж байгаа бол Helm Chart -г ашиглан күбэрнетес, клустер-г хялбархан тохируулна. Гэхдээ күбэрнетес, клустертэй ажиллаж байгаа үед гарын авлага, документ, тест зэргийг сайтар судалсны дараа турших хэрэгтэй.

Docker Compose

Compose нь нэгээс олон контейнеруудыг нэг дор ажилууллах үед YAML файл дотор тохируулсан бүтцийг ашиглан докер ажиллах процесс юм.

Докэр Compose үндсэн бүтэц:

  • Dockerfile
  • docker-compose.yml - апплкэйшн тус бүрийн бүтцийг тодорхойлох хэсэг. Файл дотор байгаа бүтцийн дагуу апплкэйшн серверүүдийг асааж тусгаарлагдсан орчин үүсгэнэ.
version: '2'
services:
 postgresql:
   image: 'docker.io/bitnami/postgresql:11-debian-10'
   environment:
     - ALLOW_EMPTY_PASSWORD=yes
   volumes:
     - 'postgresql_data:/bitnami/postgresql'
 odoo:
   image: 'docker.io/bitnami/odoo:14-debian-10'
   ports:
     - '80:8069'
     - '443:8071'
   volumes:
     - 'odoo_data:/bitnami'
   depends_on:
     - postgresql
volumes:
 postgresql_data:
   driver: local
 odoo_data:
   driver: local

Bitnami дах Odoo V14-н сервер, апплкэйшнг тодорхойлж байгаа docker-compose.yml -г задалж үзвэл postgresql, odoo гэсэн хоёр контейнераас services бүрдэж байна.

  • ALLOW_EMPTY_PASSWORD=yes - ѳгѳгдлийн санг нууц үггүйгээр хандалт хийдэг болгож байна (тест хийж байгаа үед тохиромжтой). Продакшн орчинд тохиромжгүй сонголт.
  • ports - [host-port]:[container-port] Хостинг портыг 80, 443 контейнер дэх 8069, 8071 порттой холбож байна. CLI - рүү бичвэл:
$ docker run -p 80:8069 --name odoo
  • depends_on - Compose хийхдээ эхлээд postgresql тодорхойлсон байна. Үүний дараа Odoo-г тохируулж байна. Ингэснээр ялгаатай хоёр контейнерээс хамааралтай байх нѳхцлийг тодорхойлж ѳгнѳ. Ѳѳрѳѳр хэлбэл нетворкинг хийж байгаа үед дарааллыг тодорхойлж ѳгѳх ба Odoo асахаас ѳмнѳ нь заавал Postgresql ассан байх ёстойг compose-д сануулж байна гэж хэлж болох юм.
  • volumes - compose хийгдэж байгаа YAML-г CLI -руу хѳрвүүлбэл:
$ docker volume create --driver local --name postgresql_data
$ docker volume create --driver local --name odoo_data

буюу [Докэр хост] дотор odoo_data, postgresql_data гэсэн нэртэй local volume үүсгэж ѳгнѳ. Докэр хост-г дэлгэрүүлбэл:

Докэр ажиллах бүтэц нь Docker Engine тѳвтэй ба дараах гурван хэсгээс бүрдэнэ.

  • Docker daemon - Docker API хүсэлтүүд хүлээн авч image, container, network, volume - зэргийн зохион байгуулалт хийх, бусад Docker Service-үүдтэй deamon -ѳѳр дамжин холбогдох гэх мэт.
  • Docker CLI (Command Line Interface)
  • REST API - Клиенттай холбогдох, Docker deamon-той уялдан харилцана.

Ѳѳрѳѳр хэлбэл докэр дотор ажиллаж байгааг image-с тусад нь volume үүсгэн ѳгч байна. Ингэснээр тухайн контейнер унтарсан ч дата персист тѳлѳвтэй дахин ашиглаж болно гэсэн юм. –driver гэдэг нь Докэр plugin ашиглаад зѳвхѳн Докэр роот-с хандалт хийх эрх локал volume үүсгэж байна. Датаг холбох ѳѳр нэг арга нь docker-compose дотор хостинг directory-г оноох боломжтой. Гэхдээ non-root хэрэглэгчийн хувьд харгалзах хандах эрх байгааг нягтлан шалгах хэрэгтэй. Жишээ нь хост direcory-г тодорхойж буй:

volumes:
  - 'odoo_data:/bitnami' #Docker Host-с дотор тодорхойлсон volume.
  - './extra-addons:/bitnami/odoo/addons' # Хост directory-г Container руу оруулж байна.

odoo_data:/bitnami дотор Odoo-г ажиллаж байх үеийн filestore -д Docker Host дотор odoo_data volume-д үүснэ. Docker volume руу зѳвхѳн Docker hosting хийж байгаа root хэрэглэгч хандах боломжтойг анхаарна уу.

./extra-addons:/bitnami/odoo/addons - ./extra-addons, directory -г Odoo контейнер дах /bitnami/odoo/addons руу оруулж байна. Ингэснээр гуравдагч эдгээдийн модиуль болон хѳгжүүлэлтийн орчин дах нэмэлт модиулыг суулган ажиллуулах боломжтой болно.

/bitnami/odoo/addons-г conf файл дотор тодорхойлж ѳгсѳн эсэхийг шалгах:

$ docker exec -it <container-name> cat /opt/bitnami/odoo/odoo-server.conf

Bitnami -г дах Dockerfile болон нэмэлт pkg суух үед Odoo-гийн коор модиулидын directory болон нэмэлтээр суулгах модиулын directory-г тодорхойлон .conf файлд тохируулсан байгааг харж болно.

[options]
addons_path = /opt/bitnami/odoo/odoo/addons,/opt/bitnami/odoo/addons
...

docker-compose.yml - файл сүүлийн байдлаар:

version: '2'
services:
  postgresql:
    image: 'docker.io/bitnami/postgresql:11-debian-10'
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
    volumes:
      - 'postgresql_data:/bitnami/postgresql'
  odoo:
    image: 'docker.io/bitnami/odoo:14-debian-10'
    ports:
      - '80:8069'
      - '443:8071'
    volumes:
      - 'odoo_data:/bitnami'
      - './extra-addons:/bitnami/odoo/addons'
    depends_on:
      - postgresql
volumes:
  postgresql_data:
    driver: local
  odoo_data:
    driver: local

Бүтэц:

...
# tree
/bitnami-odoo/
|-- extra-addons
|-- docker-compose.yml
...

Docker-compose ажилууллах:

$ docker-compose up -d

Image-үүд татаж дуусан networking хийн done болсон бол:

Status: Downloaded newer image for bitnami/odoo:14-debian-10
Creating bitnami-odoo_postgresql_1 ... done
Creating bitnami-odoo_odoo_1       ... done

http://localhost/web/login хаягаар хандан bitnami -с тодорхойлсон нэвтрэх нэр: user@example.com нууц үг: bitnami, Odoo руу нэвтрэн орно. Эсхүл шинээр db тохируулах бол ‘http://localhost/web/database/selector - хаягаар орон тохируулж болно.

Docker-compose унтраах:

$ docker-compose down

Volume шалгах:

docker volume ls

Volume устгах:

docker volume rm <volume-name>