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é!😀