0

我正在使用 Laravel Envoy 和 GitLab CI/CD 来部署我的应用程序,当我尝试使用 Sail 运行 npm install 时,我收到以下错误:

the input device is not a TTY

这是我的特使任务:

@task('run_compile')
{{ logMessage("Running compile...") }}
cd {{$deploy_path}}
./vendor/bin/sail npm ci
{{ logMessage("Npm packages installed") }}
./vendor/bin/sail npm run prod --silent --no-progress
{{ logMessage("Npm packages built") }}
rm -rf node_modules
{{ logMessage("Compile completed") }}
@endtask
4

2 回答 2

1

我认为命名您的 Laravel 容器并运行以下命令是一种更好的方法。

docker exec laravel_sail_shop npm ci

例如在 docker-composer.yml 你可以像这样命名 Laravel 帆容器

version: "3"
services:
  laravel.test:
    build:
      context: ./vendor/laravel/sail/runtimes/8.0
      dockerfile: Dockerfile
      args:
        WWWGROUP: "${WWWGROUP}"
    image: sail-8.0/app
    container_name: laravel_sail_shop
    ports:
      - "8084:80"
    environment:
      WWWUSER: "${WWWUSER}"
      LARAVEL_SAIL: 1
    volumes:
      - ".:/var/www/html"
    networks:
      - sail
    depends_on:
      - mysql
      - redis

然后在你的 .gitlab-ci.yml 中运行这样的命令,而不是使用 Laravel Sail:

- docker exec laravel_sail_shop composer install
- docker exec laravel_sail_shop php artisan migrate --seed
- docker exec laravel_sail_shop php artisan cache:clear
- docker exec laravel_sail_shop php artisan config:clear
于 2021-04-13T08:10:20.000 回答
-1

找到了一个解决方法,我没有使用 Laravel Envoy 将命令代理到容器中,而是自己运行它:

docker exec $(docker-compose ps -q) npm ci
于 2020-12-29T17:19:56.233 回答