我有一个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
答案 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)
为我工作:-)