我正在试用Laravel Sail,因为我已经成功使用Laradock几年了,希望简化我的开发环境设置。我使用的是Windows 10 64,使用WSL 2安装Docker Desktop 3.0,我的Laravel应用程序运行的是Laravel 8.20.1。
在我的Laravel项目中,我遵循了Laravel Sail setup guide:我运行了composer require laravel/sail --dev
和php artisan sail:install
,在根目录中看到了docker-compose.yml
。
但是当我运行./vendor/bin/sail up
时,我得到这个错误:
./vendor/bin/sail: line 1: XSym: command not found
./vendor/bin/sail: line 2: 0024: command not found
./vendor/bin/sail: line 3: a81960381c7144e16cd1e768af147de3: command not found
./vendor/bin/sail: line 4: ../laravel/sail/bin/sail: No such file or directory
- 更新 *:我通过Qumber的帮助修复了以上问题:删除/vendor/并重新安装。但现在我得到此错误:
在GitBash中,我得到这样的响应:Unsupported operating system [MINGW64_NT-10.0-19041]. Laravel Sail supports macOS, Linux, and Windows (WSL2).
如果我现在从Powershell尝试,我会得到:/bin/bash: C:\Users\ssund\Source\steepdb\vendor\bin\/../laravel/sail/bin/sail: No such file or directory
-------------请求的附件-------------
docker-compose.yml:
# For more information: https://laravel.com/docs/sail
version: '3'
services:
laravel.test:
build:
context: ./vendor/laravel/sail/runtimes/8.0
dockerfile: Dockerfile
args:
WWWGROUP: '${WWWGROUP}'
image: sail-8.0/app
ports:
- '${APP_PORT:-80}:80'
environment:
WWWUSER: '${WWWUSER}'
LARAVEL_SAIL: 1
volumes:
- '.:/var/www/html'
networks:
- sail
depends_on:
- mysql
- redis
# - selenium
# selenium:
# image: 'selenium/standalone-chrome'
# volumes:
# - '/dev/shm:/dev/shm'
# networks:
# - sail
mysql:
image: 'mysql:8.0'
ports:
- '${FORWARD_DB_PORT:-3306}:3306'
environment:
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
MYSQL_DATABASE: '${DB_DATABASE}'
MYSQL_USER: '${DB_USERNAME}'
MYSQL_PASSWORD: '${DB_PASSWORD}'
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
volumes:
- 'sailmysql:/var/lib/mysql'
networks:
- sail
redis:
image: 'redis:alpine'
ports:
- '${FORWARD_REDIS_PORT:-6379}:6379'
volumes:
- 'sailredis:/data'
networks:
- sail
# memcached:
# image: 'memcached:alpine'
# ports:
# - '11211:11211'
# networks:
# - sail
mailhog:
image: 'mailhog/mailhog:latest'
ports:
- 1025:1025
- 8025:8025
networks:
- sail
networks:
sail:
driver: bridge
volumes:
sailmysql:
driver: local
sailredis:
driver: local
停靠文件位于\供应商\laravel\sail\runtimes\7.4中:
FROM ubuntu:20.04
LABEL maintainer="Taylor Otwell"
ARG WWWGROUP
WORKDIR /var/www/html
ENV DEBIAN_FRONTEND noninteractive
ENV TZ=UTC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt-get update \
&& apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 \
&& mkdir -p ~/.gnupg \
&& chmod 600 ~/.gnupg \
&& echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf \
&& apt-key adv --homedir ~/.gnupg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys E5267A6C \
&& apt-key adv --homedir ~/.gnupg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C300EE8C \
&& echo "deb http://ppa.launchpad.net/ondrej/php/ubuntu focal main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \
&& apt-get update \
&& apt-get install -y php7.4-cli php7.4-dev \
php7.4-pgsql php7.4-sqlite3 php7.4-gd \
php7.4-curl php7.4-memcached \
php7.4-imap php7.4-mysql php7.4-mbstring \
php7.4-xml php7.4-zip php7.4-bcmath php7.4-soap \
php7.4-intl php7.4-readline php7.4-pcov \
php7.4-msgpack php7.4-igbinary php7.4-ldap \
php7.4-redis \
&& php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer \
&& curl -sL https://deb.nodesource.com/setup_15.x | bash - \
&& apt-get install -y nodejs \
&& apt-get install -y mysql-client \
&& apt-get -y autoremove \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
RUN setcap "cap_net_bind_service=+ep" /usr/bin/php7.4
RUN groupadd --force -g $WWWGROUP sail
RUN useradd -ms /bin/bash --no-user-group -g $WWWGROUP -u 1337 sail
COPY start-container /usr/local/bin/start-container
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY php.ini /etc/php/7.4/cli/conf.d/99-sail.ini
RUN chmod +x /usr/local/bin/start-container
EXPOSE 8000
ENTRYPOINT ["start-container"]
7条答案
按热度按时间tpgth1q71#
好吧,有很多事情我需要在这里修复。
1.@Qumber一开始帮了我的忙,建议我擦除/vendor/并再次运行composer install/update。这修复了由于某种原因没有添加的sail文件。
1.我还遇到了一些与权限相关的问题,可能是由于在WSL中运行compose,然后试图在Windows/GitBash中运行sail(反之亦然)。
1.最大的问题是我对DockerWSL 2集成的误解,我认为sail命令应该在WLS中运行(来自Laradock,我做了一些不正确的假设)。我需要安装一个Linux发行版(我选择了Ubuntu 20.x)并确保它被设置为默认值,通过运行wsl -s。您可以使用wsl -l -v检查当前的默认设置。有关此设置的更多详细步骤,请访问https://learn.microsoft.com/en-us/windows/wsl/install-win10#step-4---download-the-linux-kernel-update-package。
一旦我修复了上面的问题,我就能够打开Windows终端,创建一个Ubuntu选项卡,并运行
./vendor/bin/sail up
,它就执行了。ogsagwnx2#
你需要先在windows下安装linux。你的答案是正确的。谢谢:)
flvtvl503#
如果你像我一样从GitHub克隆了一个Laravel项目,但没有应用程序的Composer依赖项,包括Sail,你需要从项目目录运行以下命令。以下命令使用一个包含PHP和Composer的小Docker容器来安装应用程序的依赖项:
有关详细信息,请参阅Laravel文档。
dxxyhpgq4#
对我来说,这是一个权限问题。
使用Win10和WSL Ubuntu 20.04 LTS。
sgtfey8w5#
我在Mac上遇到此问题。此问题是由于权限问题
MAC解决方案
1:下拉苹果菜单,选择“系统偏好设置”
2:选择“安全与隐私”控制面板
3:现在选择“隐私”选项卡,然后从左侧菜单中选择“全磁盘访问”
4:单击首选项面板左下角的锁图标,并使用管理员级别登录进行身份验证
5:现在单击[+]加号按钮添加具有完全磁盘访问权限的应用程序
6:导航到/Applications/Utilities/文件夹,然后选择“终端”以授予“终端”完全磁盘访问权限
7:重新启动终端,“不允许操作”错误消息将消失
之后,您可以安装Laravel。
4ngedf3f6#
Windows 10的解决方案在供应商文件夹中查找sail文件:vendor/laravel/sail/bin/sail并更改此代码:
更改为:
然后使用GitBash运行命令
从Unsupported operating system Laravel 8 with Sail on Windows 10 (WSL2)开始
8xiog9wr7#
这可能听起来很疯狂,但我也有同样的问题。
我刚做了一个月一个月
而不是
.vendor/bin/sail up
这一招奏效了!