Tôi mới bắt đầu với Docker và richt Bây giờ tôi đang cố gắng tìm ra cách thiết lập môi trường Apache 2 / PHP được dockerized đầu tiên của tôi. Cho đến nay tôi đã sử dụng máy ảo Linux đầy đủ, nơi tôi đã sử dụng các tệp nhật ký được ghi vào / var / log / apache2, sau đó sử dụng "logrotate" để chuyển sang tệp mới mỗi ngày.
Logfiles chủ yếu được sử dụng để phát hiện lỗi ngay lập tức (tức là đăng nhập vào máy chủ và sử dụng ít hơn để mở các tệp access.log và error.log hiện tại) và cho fail2ban.
Nếu tôi đúng không thể thực hiện được trong môi trường Docker - chủ yếu là vì bạn thường không thể đăng nhập vào container để xem nhật ký. Ngoài ra các bản ghi sẽ bị mất nếu container được gỡ bỏ.
Vậy: Phương pháp phổ biến nhất để làm việc với / giả lập / thay thế access.log / error.log trong tình huống đó là gì? Các giải pháp phổ biến cho cả môi trường sản xuất và phát triển là gì?
Ý tưởng của tôi cho đến nay bao gồm sử dụng chia sẻ NFS (chậm và có thể gây ra xung đột tên tệp nếu không cẩn thận) và logstash (không chắc có đáng để nỗ lực và thực tế cho các trang web nhỏ hơn hoặc thậm chí môi trường dev không?) Nhưng tôi chắc chắn là người thông minh đã đưa ra giải pháp tốt hơn?
Không chắc nó có tạo ra sự khác biệt hay không, nhưng hiện tại tôi đang dựa vào hình ảnh Docker của mình trên php: 5.6-apache .
docker attach <container name>
là cách tốt để xem thiết bị xuất chuẩn từ container của bạn. Nhưng xin lưu ý rằng nếu bạn thực hiện ctrl + d hoặc ctrl + c, nó sẽ TERMINATE (sigkill) nhiệm vụ đang diễn ra của bạn. Vì vậy, bạn phải tháo nó ra bằng cách sử dụng phím thoátctrl+p+q
. Nếu bạn chỉ muốn shell vào container của bạn, tôi thích sử dụngexec
lệnh ở trên.