使用一个php容器,另一个使用dockerfile:
FROM alpine:3.8
# Create the directory that will hold the (shared) unix pipe
RUN mkdir /var/log/shared
CMD :>>/var/log/shared/pipe-from-app-to-stdout && tail -f /var/log/shared/pipe-from-app-to-stdout
PHP dockerfile(来自php:7.2-fpm-stretch)包含:
RUN mkdir /var/log/shared
ADD docker/php/bootstrap-php-fpm.sh /usr/local/bin/bootstrap-php-fpm.sh
CMD [ "/usr/local/bin/bootstrap-php-fpm.sh" ]
bootstrap-php-fpm.sh包含:
#!/bin/sh
# Create a pipe used by the PHP app to write logs
if [ ! -p /var/log/shared/pipe-from-app-to-stdout ]; then
mkfifo /var/log/shared/pipe-from-app-to-stdout
chmod 777 /var/log/shared/pipe-from-app-to-stdout
fi
exec php-fpm
他们俩都在docker-compose上共享了一个卷:
volumes:
- logs:/var/log/shared
在php脚本上,我在/ var / log / shared / pipe-from-app-to-stdout上写了一些日志(这一部分还可以,如果我将文件拖入docker容器文本中出现),但是tailf容器没有t在docker日志上显示任何输出。
我检查文件的inode在两个容器之间是否相同。
谢谢