This page looks best with JavaScript enabled

Docker in Odoo

 ·  ☕ 3 phút đọc · 👀... views

Trong bài viết lần này, mình sẽ hướng dẫn các bạn deploy odoo 17 sử dụng Docker-compose

Chuẩn bị

Đây là source code mà mình đã có sẵn

Chúng ta tập chung vào các thư mục addons, enterpriise-17.0,addons_custom và thư mục config, mục đích để khi viết docker-compose chúng ta sẽ mount chúng vào các thư mục trong container

Viết 1 docker file để build image odoo

dưới đây là 1 đoạn mình đã viết

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
FROM python:3.10

RUN groupadd -g 65533 -r odoo \
    && useradd -u 65533 -r -g odoo odoo

EXPOSE 8069

RUN mkdir -p /data/eoffice
WORKDIR /data/eoffice

RUN pip install --upgrade pip
#RUN apt-get update && apt-get install -y libsasl2-dev python3-dev libldap2-dev libssl-dev postgresql-client
RUN apt-get update && apt-get install -y python3-dev build-essential libjpeg-dev libpq-dev libxml2-dev libssl-dev libffi-dev libxslt1-dev zlib1g-dev libsasl2-dev libldap2-dev liblcms2-dev postgresql-client
COPY requirements.txt .
#RUN pip install --no-cache-dir -r requirements.txt
RUN pip install  -r requirements.txt
RUN pip install firebase-admin
RUN pip install sentry-sdk
RUN pip install raven
RUN apt-get update && apt-get install -y wkhtmltopdf
RUN pip install -U urllib3 requests
# setup
#ADD ./files/etc/profile /etc/profile
ENV TZ Asia/Ho_Chi_Minh
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ENV LANG C.UTF-8

RUN chown -R odoo:odoo /data/eoffice
USER odoo

RUN mkdir -p /data/eoffice/source
RUN mkdir -p /data/eoffice/config
RUN mkdir -p /data/eoffice/backup

COPY --chown=odoo:odoo config config/
COPY --chown=odoo:odoo . source/

RUN mkdir -p /data/eoffice/source/addons_custom

CMD ["python3.10", "/data/eoffice/source/odoo-bin", "--config=/data/eoffice/config/eoffice.conf"]

Sau đó bạn chạy câu lệnh sau để tạo 1 image mới

1
docker build -t my-odoo-image .

Khi đã có image chúng ta sẽ viết docker-compose như sau nhé :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
version: '2'
services:
  poc-eoffice:
    image: odoo17_hungpt
    user: "65533:65533"
    #build: .
    ports:
      - 8069:8069
    volumes:
      - /Users/macbook/PycharmProjects/odoo-17.0/addons_custom:/data/eoffice/source/addons_custom
      - /Users/macbook/PycharmProjects/odoo-17.0/enterpriise-17.0:/data/eoffice/source/addons_e
      - /Users/macbook/PycharmProjects/odoo-17.0/config:/data/eoffice/config
    command: odoo -u test_custom -d odoo17
    networks:
      - eoffice
  db:
    image: postgres:12
    restart: always
    environment:
      - POSTGRES_USER=odoo
      - POSTGRES_PASSWORD=asfasfas
    ports:
      - '5433:5432'
#    volumes:
#      - /data/eoffice/run/storage/db:/var/lib/postgresql/data
    networks:
      - eoffice
networks:
  eoffice:
    driver: bridge

ở đây image odoo17_hungpt mình đã tạo ra ở bước bên trên

Cấu hình file conf odoo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
[options]
addons_path = /data/eoffice/source/addons,/data/eoffice/source/enterpriise-17.0, /data/eoffice/source/addons_custom
admin_passwd = 1
bin_path = C:\Program Files\wkhtmltopdf\bin
pg_path= /Library/PostgreSQL/15/bin
csv_internal_sep = ,
data_dir =
db_host = db
db_maxconn = 640
db_name =
db_password = sadasf
db_port = 5432
db_user = odoo
db_sslmode = prefer
db_template = template0
dbfilter =
demo = {}
email_from = False
geoip_database = C:\usr\share\GeoIP\GeoLite2-City.mmdb
http_enable = True
http_interface = 
http_port = 8069
import_partial = 
limit_memory_hard = 0
limit_time_cpu = 6000
limit_time_real = 12000
# limit_memory_soft = None
# limit_request = None
#limit_time_cpu = 600000
#limit_time_real = 12000
# limit_time_real_cron = None
list_db = True
log_db = False
log_db_level = warning
log_handler = :INFO
log_level = info
logfile =
;workers = 1
;longpolling_port = 8111

Có một chút khác biệt ở phần db_host = db, do các container được cấu hình trên cùng 1 host nên địa chỉ ip của database chính là tên container chúng ta đã khai báo trong docker-compose.yaml

Bài viết về docker trong Odoo của mình cũng dừng lại ở đây, hẹn mọi người vào những bài viết tiếp theo nhé!😀

Chia sẻ
Support the author with

Hùng Phạm
Viết bởi
Hùng Phạm
Web/Mobile Developer