Windows 10 Docker:/ usr / bin / env:' php \ r':没有这样的文件或目录

时间:2018-06-11 00:02:33

标签: php windows docker docker-compose docker-for-windows

我有一个docker-compose.yml文件,我定义了图像和php的构建。它是用于带有postgis的php,nginx和postgresql的Symfony应用程序:

version: '2'
services: 

 front:
    image: nginx
    ports:
      - "81:80"
    links:
      - "engine:engine"
      - "db:db"
    volumes:
      - ".:/home/docker:ro"
      - "./docker/front/default.conf:/etc/nginx/conf.d/default.conf:ro"

 engine:
    build: ./docker/engine/
    volumes:
      - ".:/home/docker:rw"
      - "./docker/engine/php.ini:/usr/local/etc/php/conf.d/custom.ini:ro"
    links:
      - "db:db"
    working_dir: "/home/docker"



  db:
    image: camptocamp/postgres:9.6
    ports:
      - "5433:5432"
    environment:
      - "POSTGRES_DB=pfe"
      - "POSTGRES_PASSWORD=admin"
      - "POSTGRES_USER=admin"
      - "PGDATA=/var/lib/postgresql/data/pgdata"

在Ubuntu上一切正常但是当我试图在Windows 10上运行相同的环境时,我收到了一个错误。

docker-compose exec engine bin/console doctrine:schema:create
    /usr/bin/env: 'php\r': No such file or directory

5 个答案:

答案 0 :(得分:3)

从错误消息中,您似乎面临与EOL相关的问题。

尝试将脚本/文件转换为UNIX格式的EOL。

您可以使用Sublime / Notepadd ++或任何支持此功能的编辑器 或者在unix平台上,您可以尝试dos2unix

答案 1 :(得分:2)

我想出了一种解决方法:https://stackoverflow.com/a/2613834/3257568

tr -d '\015' <DOS-file >UNIX-file

所以,我这样做了:

$ docker exec -it <container> bash
$ cd bin
$ tr -d '\015' <console >console.new
$ mv console console.old
$ mv console.new console

它现在正在工作:)

答案 2 :(得分:0)

1)这种错误的另一种可能的解决方法是将.gitattribues文件添加到您的项目中并设置*.sh text eol=lf(在docker容器内运行的任何文件扩展名上)。这样,Windows上的git默认值不会弄乱您的.sh文件。注意:您需要重新启动git pull才能起作用。

2)在我的情况下,错误仅是运行没有正确权限的php脚本。因此,您可以预先对其进行chmod修改,或在开始时添加php。例如:php bin/console

两个问题都可能导致相同的错误。

答案 3 :(得分:0)

在我的情况下,删除chmod +x转换,而在产生错误的命令开头添加php

答案 4 :(得分:0)

尝试一下:

tr -d '\15' < original_file > converted_file

在您的情况下:

tr -d '\15' < bin/console > console

然后替换该文件(将文件控制台移至目录bin)

为我工作:-)