【发布时间】:2021-11-21 13:53:36
【问题描述】:
我在Windows 10 机器上使用Docker-compose 为Laravel 项目设置了Docker 环境:
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 命令?
【问题讨论】:
-
您是否尝试过将命令包装在
"中,例如docker exec php "php /var/www/html/artisan ..." -
@Spirit 结果相同。
-
另一种选择是连接到容器并在其中执行命令:
docker exec -it php sh
标签: php laravel docker docker-compose