docker安装laravel
官网文档:
https://learnku.com/docs/laravel/9.x/installation/12200#getting-started-on-macos
curl -s "https://laravel.build/example-app" | bash
此 URL 中的「example-app」更改为你喜欢的任何内容。Laravel 应用程序的目录将在你执行命令的目录中创建。
创建项目后,你可以导航到应用程序目录并启动 Laravel Sail。Laravel Sail 提供了一个简单的命令行界面,用于与 Laravel 的默认 Docker 配置进行交互:
cd example-app
./vendor/bin/sail up
去官网下一下.env.example,复制一份重新命名为自己要用的变量
https://github.com/laravel/laravel/blob/9.x/.env.example
如果是用上面的sail启动的话,会下载很多没啥用的东西,就挺慢的。如果不是非得用docker的话,用composer下载会快很多。
根据你项目需要,修改你的docker-compose.yml文件。比如镜像啥的、端口号啥的:
# For more information: https://laravel.com/docs/sail version: '3' services: appsmith-api.test: build: context: ./vendor/laravel/sail/runtimes/8.1 dockerfile: Dockerfile args: WWWGROUP: '${WWWGROUP}' image: appsmith-api/app extra_hosts: - 'host.docker.internal:host-gateway' ports: - '91: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 mysql: image: 'mysql/mysql-server:8.0' ports: - '33060:3306' environment: MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}' MYSQL_ROOT_HOST: "%" MYSQL_DATABASE: '${DB_DATABASE}' MYSQL_USER: '${DB_USERNAME}' MYSQL_PASSWORD: '${DB_PASSWORD}' MYSQL_ALLOW_EMPTY_PASSWORD: 1 volumes: - 'sail-mysql:/var/lib/mysql' - './vendor/laravel/sail/database/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh' networks: - sail healthcheck: test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"] retries: 3 timeout: 5s networks: sail: driver: bridge volumes: sail-mysql: driver: local
使用命令,停掉现在运行的:
docker-compose down
在使用命令,重启你修改后的的docker-compose.yml:
docker-compose up -d
进入到容器里面,可以用命令,也可以在docker桌面版里面直接进入:
docker exec -it "CONTAINER ID" /bin/bash
连接mysql,最开始是没有密码登入的。
mysql -uroot -p
没关系,按照这个文档重新设置:
https://blog.csdn.net/u012069313/article/details/123051399
执行语句修改 MySQL root 密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxxxxx';
报错:
ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'
解决方法
执行语句:
use mysql; select user,host from user where user='root';
发现 host 列的值是 ‘%’,因此将修改密码语句改为:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'xxxxxx'; flush privileges;
问题解决。
一个命令,可以生成随机的密码:
cat /dev/urandom | base64 | head -c 15