Как выполнить PHP artisan в контейнере Docker PHP

#php #laravel #docker #docker-compose

Вопрос:

Я установил среду Docker для Laravel проекта с Docker-compose помощью на Windows 10 компьютере:

 version: '3'  networks:  laravel:  services:  nginx:  image: nginx:stable-alpine  container_name : nginx  ports:  - "8088:80"  volumes:  - ./src:/var/www/html  - ./nginx/default.conf:/etc/nginx/conf.d/default.conf  depends_on:  - php  - mysql  networks:  - laravel   mysql:  image : mysql:5.7.22  container_name: mysql  restart: unless-stopped  tty: true  ports:  - "4306:3306"  volumes:  - ./mysql:/var/lib/mysql  environment:  MYSQL_DATABASE: laravel  MYSQL_USER: admin  MYSQL_PASSWORD: password  MYSQL_ROOT_PASSWORD: password  SERVICE_TAGS: dev  SERVICE_NAME: mysql  networks:  - laravel    php:  build:  context: .  dockerfile: Dockerfile  container_name: php  volumes:   - ./src:/var/www/html  ports:  - "9000:9000"  networks:  - laravel  

Я также создал DockerFile :

 FROM php:8.0-fpm-alpine RUN docker-php-ext-install pdo pdo_mysql  

Все работает нормально. Однако у меня возникли трудности с пониманием того, как работать artisan . Судя по тому, что я видел в Интернете, мне следует бежать docker-compose exec php php /var/www/html/artisan ... . Но я получаю это сообщение от Docker :

 `Could not open input file: C:/Users/lharr/AppData/Local/Programs/Git/var/www/html/artisan`   

что делает бессмысленным, поскольку этого пути не существует. Но зачем Docker идти в этот конкретный репозиторий C:/Users/lharr/AppData/Local/Programs/Git/ ? и разве тома, определенные в Docker-compose , не должны создавать /var/www/html/artisan репозиторий ? Как я могу узнать, где PHP хранится и как я могу правильно выполнить artisan команду внутри этого контейнера ?

Комментарии:

1. Вы пробовали обернуть команду " так docker exec php "php /var/www/html/artisan ..."

2. @Дух Тот же результат.

3. Другой вариант-подключиться к контейнеру и выполнить команду внутри: docker exec -it php sh

Ответ №1:

Оказывается, решение этой проблемы было довольно простым : нет необходимости указывать полный путь к artisan при выполнении команды. Значения вместо docker-compose exec php php /var/www/html/artisan ... docker-compose exec php php artisan этого достаточно.