Php docker compose出现问题:未找到容器命令

Php docker compose出现问题:未找到容器命令,php,nginx,docker,docker-compose,dockerfile,Php,Nginx,Docker,Docker Compose,Dockerfile,尝试使用docker compose启动多个容器时遇到问题: Dockerfile: FROM nginx:1.9 ADD ./nginx-sites/default /etc/nginx/sites-available/default docker-compose.yml: version: "2" services: web: build: . ports: - "80:80" volumes: - ./src:/var/www

尝试使用docker compose启动多个容器时遇到问题:

Dockerfile:

FROM nginx:1.9
ADD ./nginx-sites/default /etc/nginx/sites-available/default
docker-compose.yml:

version: "2"
services:
  web:
    build: .
    ports:
      - "80:80"
    volumes:
      - ./src:/var/www
    links:
      - fpm
  fpm:
    image: php:7-fpm
    volumes:
      - ./src:/var/www
当我使用
docker compose up
启动应用程序时,出现以下错误:

ERROR: Container command not found or does not exist.

希望在这个问题上能得到一些帮助。

就像原始问题的评论中提到的那样,php:fpm图像需要将其音量设置为
/var/www/html

如果您想使用不同的目录,可以使用自己的Dockerfile(基于php:fpm)来解决这个问题。该
Dockerfile
将如下所示:

FROM php:fpm

WORKDIR /var/www
似乎将workdir设置为所需的dir就可以做到这一点

然后在您的
docker compose.yml
中,您将使用该Dockerfile进行构建,而不是直接使用php:fpm映像

version: "2"
services:
  # ...
  fpm:
    build: ./path/to/dockerfile
    volumes:
      - ./src:/var/www

我刚开始考虑这个问题,因为我也有同样的问题。如果从fpm服务中删除卷部分,它是否会启动?(显然没有php fpm可以访问的文件,但只是出于兴趣)是的。如果fpm下没有volumes部分,它将正常启动。实际上,如果我将卷设置为“/src:/var/www/html”(对于web和fpm服务),应用程序将启动,但我无法通过localhost访问任何内容。如果您在Mac或Windows上,可能需要点击boot2docker vm的IP而不是“localhost”。我的默认设置为192.168.99.100。是的,就是这样。谢谢。我仍然不确定为什么卷需要是/var/ww/html,但这可能是因为php fpm。如果你发布一个答案,我可以将其标记为已接受。这应该是正确的答案!目前的答案是假的。