我想将 SQL 驱动程序添加到 Docker 文件中,我将文件从vendor/laravel/runtimes/8.0/Dockerfile 复制到根项目并进行修改以添加 SQL Server 驱动程序的依赖项。这是我的根项目中的 Dockerfile:
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 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Laravel Sail 在本地处理现有项目。我不断收到 1049 未知数据库错误。我尝试过以下方法:
sail php artisan config:clear
sail php artisan config:cache
Run Code Online (Sandbox Code Playgroud)
我还尝试将 mysql 替换为使用 127.1.1.0 的主机,例如 .env.example 文件,但没有成功。
我也尝试过重建容器,但似乎没有解决问题。
这是我的 .env 文件(当我尝试使用 root 以外的用户时,我收到 1045 错误,指出访问被拒绝,想知道这些是否相关):
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
Run Code Online (Sandbox Code Playgroud)
这是我的 docker-compose.yml 文件:
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
Run Code Online (Sandbox Code Playgroud)
数据库配置:
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' …Run Code Online (Sandbox Code Playgroud) 我使用 PostgreSQL 创建了一个 laravel sail 项目,然后尝试连接第 3 方软件(TablePlus 和 Navicat)上的服务器,我收到此错误消息
FATAL: password authentication failed for user "sail"
Run Code Online (Sandbox Code Playgroud)
这是我的 docker-compose.yml
pgsql:
image: 'postgres:13'
ports:
- '${FORWARD_DB_PORT:-5432}:5432'
environment:
PGPASSWORD: '${DB_PASSWORD:-secret}'
POSTGRES_DB: '${DB_DATABASE}'
POSTGRES_USER: '${DB_USERNAME}'
POSTGRES_PASSWORD: '${DB_PASSWORD:-secret}'
volumes:
- 'sailpgsql:/var/lib/postgresql/data'
networks:
- sail
healthcheck:
test: ["CMD", "pg_isready", "-q", "-d", "${DB_DATABASE}", "-U", "${DB_USERNAME}"]
retries: 3
timeout: 5s
Run Code Online (Sandbox Code Playgroud)
这是我的环境
DB_CONNECTION=pgsql
DB_HOST=pgsql
DB_PORT=5432
DB_DATABASE=laravel
DB_USERNAME=sail
DB_PASSWORD=password
Run Code Online (Sandbox Code Playgroud)
这是全新安装,我没有做任何更改。它与 MySQL 一起使用,我错过了什么吗?谢谢..
使用 laravel sail 文档构建 laravel 项目。正如 docker-compose.yml 文件中提到的,它提到了dockerfile: Dockerfile。但它并不位于根文件夹中,那么它在哪里呢?
# For more information: https://laravel.com/docs/sail
version: '3'
services:
laravel.test:
build:
context: ./vendor/laravel/sail/runtimes/8.1
**dockerfile: Dockerfile**
args:
WWWGROUP: '${WWWGROUP}'
image: sail-8.1/app
extra_hosts:
- 'host.docker.internal:host-gateway'
ports:
- '${APP_PORT:-80}:80'
environment:
WWWUSER: '${WWWUSER}'
LARAVEL_SAIL: 1
XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
volumes:
- '.:/var/www/html'
networks:
- sail
depends_on:
- mysql
- redis
- meilisearch
- selenium
Run Code Online (Sandbox Code Playgroud) 所以 Sails 的最新版本使得使用 Xdebug 变得非常容易。基本上只需SAIL_XDEBUG_MODE在.env文件中定义,在 PhpStorm 中配置路径映射,激活监听,一切就完成了 - 它可以在浏览器中完美运行。
现在,如果我想在使用命令行时激活 Xdebug,我该怎么做?就像使用 artisan 命令进行播种时一样,或者更好的是使用创建的自定义 artisan 命令来运行脚本来更新某些数据时......我找不到任何要添加到我的参数中的参数来sail artisan myOwnCommand告诉 Xdebug 它必须激活。
我正在使用 WSL2 在 Windows 11 上工作。
先谢谢了!
我正在尝试将 Laravel 8 项目从 Homestead 迁移到 Sail。Sail 似乎设置正确,因为我可以在本地访问我的项目网站。但我无法进入 mysql 来查看数据库:
\n\xe2\x9e\x9c myproject git:(master) \xe2\x9c\x97 sail mysql\nERROR 1045 (28000): Access denied for user 'myproject'@'localhost' (using password: YES)\nRun Code Online (Sandbox Code Playgroud)\n我尝试过重新启动 Docker,并重新启动终端并运行,sail build --no-cache && sail up但没有成功。
这是我的文件的相关部分.env:
DB_CONNECTION=mysql\nDB_HOST=localhost\nDB_PORT=3306\nDB_DATABASE=myproject\nDB_USERNAME=myproject\nDB_PASSWORD=secret\nRun Code Online (Sandbox Code Playgroud)\n这是docker-compose.yml文件:
# For more information: https://laravel.com/docs/sail\nversion: '3'\nservices:\n laravel.test:\n build:\n context: ./vendor/laravel/sail/runtimes/8.1\n dockerfile: Dockerfile\n args:\n WWWGROUP: '${WWWGROUP}'\n image: sail-8.1/app\n extra_hosts:\n - 'host.docker.internal:host-gateway'\n ports:\n - '${APP_PORT:-80}:80'\n - '${HMR_PORT:-8080}:8080'\n environment:\n WWWUSER: '${WWWUSER}'\n LARAVEL_SAIL: 1\n XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'\n …Run Code Online (Sandbox Code Playgroud) 我从 GitHub 克隆了一个存储库,这是一个已经有 Sail 的 Laravel 项目。\n然后为了安装 Composer 依赖项,我运行了:
\ndocker run --rm \\\n -u "$(id -u):$(id -g)" \\\n -v "$(pwd):/var/www/html" \\\n -w /var/www/html \\\n laravelsail/php81-composer:latest \\\n composer install --ignore-platform-reqs\nRun Code Online (Sandbox Code Playgroud)\n之后,我运行了sail up。\n所有图像均已拉取并构建。
现在我可以通过浏览器访问该项目及其路径,甚至可以使用sail mysql命令。但问题是,当我运行sail artisan命令时,会显示此消息:\n service "laravel.test" is not running container #1。
我使用的是 Windows,并且wsl2它ubuntu 20也是默认的 Linux 发行版。
提示:在另一个新项目中,我对 Sail 没有任何问题。
\n我之前做了这些事情,但没有解决问题:
\nAPP_SERVICE=laravel.test到.env.composer update。这是你的 docker-compose 文件
要添加“Phpmyadmin”,您只需执行以下命令,我将在“answer”中保留这些命令
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
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
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"]
retries: 3
timeout: 5s
networks:
sail:
driver: bridge
volumes:
sailmysql:
driver: local
Run Code Online (Sandbox Code Playgroud)
我希望我有所帮助,因为我意识到这方面的信息不多(至少不清楚)......
我在 Mac 上使用 PhpStorm。我正在尝试在远程 Ubuntu 服务器上的 Sail 容器内调试 Laravel 应用程序。
我从 Sail 容器内的 Xdebug 看到的错误是:
[17] Log opened at 2021-09-26 21:24:59.590599
[17] [Step Debug] INFO: Checking remote connect back address.
[17] [Step Debug] INFO: Checking header 'HTTP_X_FORWARDED_FOR'.
[17] [Step Debug] INFO: Client host discovered through HTTP header, connecting to 89.164.145.129:9003.
[17] [Step Debug] WARN: Could not connect to client host discovered through HTTP headers, connecting to configured address/port: host.docker.internal:9003. :-|
[17] [Step Debug] INFO: Connected to debugging client: XXX.XXX.XXX.XXX:9003 (from …Run Code Online (Sandbox Code Playgroud) laravel-sail ×9
docker ×8
laravel ×7
mysql ×2
php ×2
xdebug ×2
dockerfile ×1
laravel-8 ×1
laravel-9 ×1
mysql-8.0 ×1
phpmyadmin ×1
phpstorm ×1
postgresql ×1
sql-server ×1