无法从Dockerfile或Docker Compose运行命令

时间:2016-10-11 15:45:16

标签: laravel docker docker-compose dockerfile

我正在尝试使用[laradock] [1]创建一个nginx-laravel-mysql堆栈的docker容器,这是一个用于laravel的免费docker-compose插件。

要使其正常工作,我必须从我的本地环境或正在运行的容器中运行php artisan key:generate(两种不良做法)。

我尝试将command: /bin/bash -c "php artisan key:generate"添加到我的docker-compose.yml文件中。这导致退出;当我运行docker-compose ps时,我会看到laradock_workspace_1 /bin/bash -c nohup php art ... Exit 1。添加nohup会导致相同的结果。 实际上,我在这里运行的任何命令都会导致退出

转到Dockerfile。如果我添加RUN php artisan key:generate(或其任何变体),我会得到:

ERROR: Service 'workspace' failed to build: The command '/bin/sh -c php artisan key:generate' returned a non-zero code: 1

如果我运行与CMDENTRYPOINT相同的命令,即使使用nohup,它也会运行并生成密钥,但会退出:

docker-compose ps说:laradock_workspace_1 /bin/sh -c nohup php artis... Exit 0

我可以将restart: always添加到docker-compose.yml,但这会导致密钥生成,退出,重启的恶性循环。

如何在不退出的情况下从Dockerfile或docker-compose.yml执行此命令(或任何命令)的任何想法?

编辑:回答@dnephin的问题:php artisan key:generate向/.env文件添加一个哈希值,并为php数组添加一个值。它只需要该命令,无需输入。当我运行docker-compose run workspace php artisan key:generate时,我得到Could not open input file: artisan

奇怪的是,当我运行docker-compose run workspace pwd时,我看到了我的laravel文件的正确路径(如果我运行docker-compose exec workspace bash,我可以看到所有这些文件,但是当我尝试运行docker-compose run workspace ls时我没有看到任何东西。就像文件不存在一样。

0 个答案:

没有答案