免责声明:我在这里发布这个,因为人们开始投票closures这个问题作为“脱离主题”。 虽然有些人认为Docker问题应该在SO上发布,而不是SF,但是其他人却相反。
我有以下docker-compose.yml文件,它运行带有PHP支持的nginx:
version: '3' services: nginx: container_name: my-app-nginx image: nginx:1.13.6 ports: - 8080:80 volumes: - ./nginx-default.conf:/etc/nginx/conf.d/default.conf - ./my-app:/var/www/my-app restart: always depends_on: - php php: container_name: my-app-php image: php:7.1-fpm volumes: - ./my-app:/var/www/my-app restart: always
/var/www/my-app的PHP应用/var/www/my-app需要与一个linux守护进程进行通信(我们称之为myappd )。
我看到的方式,我需要:
myappd复制到/usr/local/bin的nginx容器中,用chmod +x使其可执行,并在后台运行。 myappd复制到/usr/local/bin ,使用chmod +x使其可执行,并在前台运行它。 现在,我是Docker的新手,我正在研究和了解它,但是鉴于我在使用Docker Composer,我的最佳猜测是选项2可能是推荐的选项? 鉴于我对Docker的知识有限,我不得不猜测这个容器需要某种基于Linux的映像(比如Ubuntu或者其他)来运行这个二进制文件。 所以也许选项1是首选? 或者,也许选项2是可能的一个最小的Ubuntu图像,也许没有这样的形象是可能的?
无论哪种方式,我不知道如何在composer文件上实现它。 特别是选项2,PHP应用程序将如何与守护程序在不同的容器中进行通信? 就像我为nginx / php服务所做的那样,“共享”一个卷(二进制文件所在的位置)就足够了吗? 还是其他什么是必需的?