Copy tệp ca.crt
Vì cả django và elastic đều chạy ở docker compose riêng biệt, nên chúng ta phải sao chép tệp ca.crt vào docker của django.
Vậy lấy tệp ca.crt ở đâu? hãy xem bài: Cách sử dụng kết nối ssl với Elasticsearch chạy docker compose
Hãy sao chép tệp ca.crt vào thư mục gốc của django, và đảm bảo khi bạn build django tệp được sao chép vào container.
Lưu ý, nếu django không chạy trong docker, thì không cần sao chép tệp ca.crt vào django, chỉ cần trỏ đường dẫn đầy đủ là được
Tệp .env của django:
- Thay thế user và pass của bạn,
/app
chính là thư mục làm việc mà bạn khai báo trong tệp Dockerfile của django:WORKDIR /app
- es01 là tên của SERVICE, không sử dụng container_name.
- Elastic và Django phải thuộc cùng một mạng, nếu không hãy sử dụng
https://localhost:9200 hoặc elastic.domain.com
ELA_HOST=https://es01:9200
ELA_CA_CERTS='/app/ca.crt'
ELA_USER=user
ELA_PAS=pass
Tệp settings.py
ELASTICSEARCH_DSL = {
'default': {
'hosts': os.environ.get('ELA_HOST'),
'ca_certs': os.environ.get('ELA_CA_CERTS'),
'http_auth': (os.environ.get('ELA_USER'), os.environ.get('ELA_PAS')),
'use_ssl': True,
'timeout': 30,
},
}
Nếu không sử dụng biến môi trường, bạn có thể thay thế trực tiếp.
Bây giờ chỉ cần build lại django là xong
cd django...
docker compose up -d --build