- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
如何在不同的 NGINX 和 PHP-FPM 容器之间交付容器化 PHP 应用程序的代码,该应用程序的镜像基于 busybox,仅包含代码?我使用第三版的 docker compose。
包含代码的图像的 Dockerfile 将是:
FROM busybox
#the app's code
RUN mkdir /app
VOLUME /app
#copy the app's code from the context into the image
COPY code /app
docker-compose.yml 文件将是:
version: "3"
services:
#the application's code
#the volume is currently mounted from the host machine, but the code will be copied over into the image statically for production
app:
image: app
volumes:
- ../../code/cms/storage:/storage
networks:
- backend
#webserver
web:
image: web
depends_on:
- app
- php
networks:
- frontend
- backend
ports:
- '8080:80'
- '8081:443'
#php
php:
image: php:7-fpm
depends_on:
- app
networks:
- backend
networks:
cms-frontend:
driver: "bridge"
cms-backend:
driver: "bridge"
我想到的解决方案,都不合适:
1) 在 PHP 和 NGINX 容器中使用应用程序容器中的卷,但 compose v3 不允许这样做(volumes_from 指令)。无法使用。
2) 将代码放在命名卷中并将其连接到容器。这样做我无法将代码容器化。不能用。 (我还必须在群中的每个节点上手动创建这个卷吗?)
3) 基于NGINX和PHP-FPM直接将代码复制两次到镜像中。坏主意,我必须保持它们一致。
被这个困住了。还有其他选择吗?我可能误解了一些东西,只是从 Docker 开始。
最佳答案
我也一直在四处寻找解决类似问题的方法,似乎 Nginx + PHP-FPM 是其中一个异常(exception),因为最好让两种服务都在一个容器中运行以进行生产。在开发中,您可以将项目文件夹绑定(bind)到 nginx 和 php 容器。根据 Bret Fisher 的 php 良好默认设置指南:php-docker-good-defaults
So far, the Nginx + PHP-FPM combo is the only scenario that I recommend using multi-service containers for. It's a rather unique problem that doesn't always fit well in the model of "one container, one service". You could use two separate containers, one with nginx and one with php:fpm but I've tried that in production, and there are lots of downsides. A copy of the PHP code has to be in each container, they have to communicate over TCP which is much slower than Linux sockets used in a single container, and since you usually have a 1-to-1 relationship between them, the argument of individual service control is rather moot.
您可以在此处的 docker 页面上阅读有关设置多个服务容器的更多信息(它也在上面的链接中列出):Docker Running Multiple Services in a Container
关于php - Docker - 将代码交付给 nginx 和 php-fpm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45614753/
我不知道在互联网上搜索此类 friend 的正确关键字,仅靠关键字 friend 不会带来预期的结果。 class Integer { friend int; }; friend int 是什么
我有两个数组,我想知道它们是否具有共同元素的最简单方法。所以实际上这个问题必须要提问。 string[] countries1 = new string[] { "USA", "Uruguay", "
我需要一个很好的资源来阅读如何创建一个算法来获取两条折线(一条由多条线组成的路径)并在它们之间执行并集、减法或交集。这与自定义 API 相关,因此我需要了解底层算法。 此外,任何 VB 方言的源代码都
我有一个生成简单 JPEG 图像的 C# 应用程序。我需要能够存储这些图像并在未来的不同时间调用它们。因此,我正在寻找一个交 key 的、安全的 CDN 系统。我已经将自己的服务器与 Windows
我是 ARKit 的新手,在检查了一些示例代码后,如 https://developer.apple.com/sample-code/wwdc/2017/PlacingObjects.zip我想知道是
例如,我想知道绿色是否会是在 div 标记内的字符 AAA 和 BBB 上,用于所有文档类型,例如 xhtml、html5、html? AAABBB 但我试过了,AAA 将是绿色,BBB 将是黑色作为
来 self 的问题 Insert element to ArrayList with ascending order and no duplicate elements 我已经完成了插入方法。 现在
我正在使用 Adobe LiveCycle ES 2 交 key 项目,它在 JBoss AS 4.2.1.GA 上运行。我在让 JNDI 绑定(bind)在 JBoss 中工作时遇到问题。这似乎
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提出有关书籍、工具、软件库等建议的问题。您可以编辑问题,以便可以用事实和引用来回答它。 去年关闭
我正在帮助一家典型的小公司,该公司从几个外包系统(谷歌应用程序、svn/trac)开始。添加了一个内部 jabber 服务器(ejabber 主要用于 iChat 客户端)。订阅几个网络服务(例如 h
假设我有以下代码(一个简单的 CRTP 类层次结构)。我想对基类类型进行 typedef 以节省自己的输入(在我的实际代码中,我多次使用基类类型并且基类采用多个模板参数),并且我需要与基类交 frie
我是一名优秀的程序员,十分优秀!