Docker Compose
Tài liệu Docker Compose có đề cập rằng
Compose is a tool for defining and running multi-container Docker applications.
Compose là một công cụ để định nghĩa và chạy các ứng dụng Docker đa-container.
Thực tế là chúng ta có thể làm nhiều hơn thế, tài liệu này sẽ đưa ra một số lưu ý khi sử dụng Docker Compose.
Không lưu trữ các khoá bí mật bên trong Docker Compose (hoặc repository tương ứng)
Tương tự như việc Không được phép chứa thông tin bí mật trong Dockerfile (hoặc repository tương ứng), không được phép lưu các khoá bí mật bên trong Docker Compose.
$ cat docker-compose.yml
mysql:
image: mysql
container_name: mysql
volumes:
- "./data/mysql:/var/lib/mysql"
environment:
- "MYSQL_ROOT_PASSWORD=root"
- "MYSQL_DATABASE=saml"
- "MYSQL_USER=saml"
- "MYSQL_PASSWORD=saml"
Cải thiện đầu tiên là sử dụng một tệp tin được lưu trữ bên ngoài Dockerfile's hoặc Docker Compose's và chỉ được lấy hoặc tạo ra khi deploy.
$ cat docker-compose.yml
mysql:
image: mysql
container_name: mysql
volumes:
- "./data/mysql:/var/lib/mysql"
$ cat .env
MYSQL_ROOT_PASSWORD=root
MYSQL_DATABASE=saml
MYSQL_USER=saml
MYSQL_PASSWORD=saml
Từ Docker Compose 0.6, có thể sử dụng variable expansion để thực hiện điều này.
$ cat docker-compose.yml
mysql:
image: mysql
container_name: mysql
volumes:
- "./data/mysql:/var/lib/mysql"
environment:
- "MYSQL_ROOT_PASSWORD=$(ADMPWD)"
- "MYSQL_DATABASE=$(DB)"
- "MYSQL_USER=$(DBU)"
- "MYSQL_PASSWORD=$(DBUPWD)"
$ ADMPWD=root DB=saml DBU=saml DBUPWD=saml docker-compose up -d
Câu lệnh này có thể được tạo ra và thực thi bởi các công cụ deploy mà không để lộ các tham số dưới dạng "plain text".
Container-Compositions are Microservices
Các container thành phần được xem như là những Microservices
Một container thành phần có thể hoặc nên được xem như là một microservice. Khi container khởi chạy, nó nên hoạt động thành công và cung cấp một service tương ứng.