Windows下使用laradock作为开发环境

关于laradock

  • laradock是laravel官方维护的一个用于php开发docker集成环境 预先打包的Docker镜像,所有配置官方基本提供了。

  • Laradock是在laravel社区众所周知的,因为这个项目最开始只关注在Docker上运行的laravel项目。后来,由于PHP社区的大量使用,它开始支持比如Symfony、CodeIgniter、WordPress、Drupal等其他的PHP项目。

    个人用例

  • windows下它依然是我日常开发的主要环境,对于刚开始学习和了解docker都有比较好的帮助,我也是去年开始学习并使用docker。并在实际的业务场景中基于laradock给客户部署过一套php相关的项目,也基于客户内网部署过一套docker lnmp环境 ,使用和了解它,使我大大缩减了部署相关环境所耗费的时间。

开始安装docker

在这里插入图片描述

启动异常问题

  • 关闭USE WSL 我们使用git工具作为命令行操作面板
  • 登录docker账号 这个在官网注册一个

在这里插入图片描述

  • 设置一个镜像源 有服务器的同学可以在自己服务器平台创建一个或者 传送门

在这里插入图片描述

开始构建镜像

在这里插入图片描述

cd www
git clone https://gitee.com/pltrue/laradock
cd laradock
cp env-example .env
vim .env

//修改文件mysql版本

MYSQL_VERSION=5.7

//如果需要开启swoole

WORKSPACE_INSTALL_SWOOLE=true
PHP_FPM_INSTALL_SWOOLE=true
PHP_WORKER_INSTALL_SWOOLE=true
WORKSPACE_INSTALL_SWOOLE=true

//开始拉取需要的镜像 完成之后继续下一步

 docker-compose build nginx php-fpm redis mysql 

//启动容器 

docker-compose up -d nginx php-fpm redis mysql

//进入某个容器

winpty docker-compose exec redis bash //windows git下 记得带上命令 winpty

//进入workspace容器 

winpty docker-compose exec workspace bash

//www 映射的是本地 laradock 同级目录  所有的项目都在/var/www 目录下面 其他命令可以查看官方文档

配置项目 nginx

在这里插入图片描述

 //配置好了之后,重启nginx
 winpty docker-compose exec nginx bash
 nginx -s reload
  • 在laradock/nginx/sites目录下配置nginx配置文件 php框架的模板都有

注意

  • 容器之间通信不能通过127.0.0.1 而是通过容器名:例如:redis,mysql
  • 如果需要配置额外的端口与容器通信 在docker-compose.yml、和env中配置新端口 然后重新重建容器(如下图)
  • 之后所有操作都一样。其他具体可以查看中文文档。如果有问题,可以在本文下面提出,我会即时答复。

在这里插入图片描述

本作品采用《CC 协议》,转载必须注明作者和本文链接
不成大牛,不改個簽
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 8

我按您的步骤创建docker环境,提示

WARNING: Ignoring https://dl-cdn.alpinelinux.org/alpine/v3.13/main: Permission denied
WARNING: Ignoring https://dl-cdn.alpinelinux.org/alpine/v3.13/community: Permission denied
ERROR: unable to select packages:
  bash (no such package):  
    required by: world[bash] Service 'nginx' failed to build : The command '/bin/sh -c apk update     && apk upgrade     && apk --update add logrotate     && apk add --no-cache openssl     && apk add --no-cache bash' returned a non-zero code: 1  |
3年前 评论
jxdr 3年前
Latent (楼主) 3年前
Latent (楼主) 3年前

执行成功了,执行了很多次 :joy:

3年前 评论
//启动容器 

docker-composer up -d nginx php-fpm redis mysql

这个命令写错了

docker-compose up -d nginx php-fpm redis mysql
3年前 评论

@风吹过有夏天的味道 大意了 已修正 :cry:

3年前 评论
Creating laradock_mysql_1            ... error
Creating laradock_redis_1 ...
Creating laradock_docker-in-docker_1 ...

ERROR: for docker-in-docker  Cannot create container for service docker-in-docker: status code not OK but 500: \ufffd\ufffd\ufffd\ufffd
                                                                                                                                       FDocker.Core, Version=3.0.2.51106, Culture=neutral, PublicKeyToken=null
                  ocker.Core.DockerException
WatsonBucketsSystem.Collections.IDictionarySystem.ExceptionssageDataInnerExceptionHelpURLStackTraceStringRemoteStackTraceStringRemoteStackIndexExceptionMethodHResultSource
                                                         ocker.Core.DockerExceptionFilesharing has been cancelled


\ufffd   ?? Docker.ApiServices.Mounting.FileSharing.<DoShareAsync>d__8.MoveNext() λ?? C:\workspaces\PR-15138\src\github.com\docker\pinata\win\src\Docker.ApiServices\Mounting\FileSharing.cs:?к? 0
--- ???????????λ???ж????????β ---
   ?? System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   ?? System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   ?? Docker.ApiServices.Mounting.FileSharing.<ShareAsync>d__6.MoveNext() λ?? C:\workspaces\PR-15138\src\github.com\docker\pinata\win\src\Docker.ApiServices\Mounting\FileSharing.cs:?к? 55
--- ???????????λ???ж????????β ---
   ?? System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   ?? System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   ?? Docker.HttpApi.Controllers.FilesharingController.<ShareDirectory>d__2.MoveNext() λ?? C:\workspaces\PR-15138\src\github.com\docker\pinata\win\src\Docker.HttpApi\Controllers\FilesharingController.cs:?к? 21
--- ???????????λ???ж????????β ---
   ?? System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   ?? System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   ?? System.Threading.Tasks.TaskHelpersExtensions.<CastToObject>d__1`1.MoveNext()
--- ???????????λ???ж????????β ---
   ?? System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   ?? System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   ?? System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__1.MoveNext()
--- ???????????λ???ж????????β ---
   ?? System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   ?? System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   ?? System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__5.MoveNext()
--- ???????????λ???ж????????β ---
   ?? System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   ?? System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   ?? System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()
\ufffd8
MoveNext
Docker.ApiServices, Version=3.0.2.51106, Culture=neutral, PublicKeyToken=null
Docker.ApiServices.Mounting.FileSharing+<DoShareAsync>d__8
Void MoveNext()\ufffdDocker.ApiServices
Encountered errors while bringing up the project.
3年前 评论

@风吹过有夏天的味道 env : gitee.com/pltrue/laradock/blob/mas...
docker-compose.yml:
gitee.com/pltrue/laradock/blob/mas...
覆盖本地.env、docker-compose.yml 将镜像清掉 docker-compose build –no-cache nginx php-fpm redis mysql 重新构建 我本地跑了一遍没出现这种情况

3年前 评论
风吹过有夏天的味道 3年前

大佬,问个想很久的问题,装过docker,配置laradock之后,本地是不是就不需要再安装集成环境了
写代码的时候是直接打开宿主机的项目文件修改还是打开workspace里面的项目文件
我现在是直接修改宿主机的文件的,用的vscode,但是配置文件里的东西都是用的以前laragon里面集成的

    "php.validate.executablePath": "D://laragon/bin/php/php-7.1.33-nts-Win32-VC14-x64/php.exe",
    "git.path": "D://laragon//bin//git//bin//git.exe",

如果我本地以前没有装过laragon之类的集成环境,这些要怎么配置啊

2年前 评论
chowjiawei 2年前
lun1bz (作者) 2年前
Latent (楼主) 2年前

@lun1bz 这个看你自己吧 我自己本地是装的php8+swoole(我自己是mac本 公司是windows) docker里php版本则和公司项目版本一致 本地主要是捣鼓一些自己的东西 直接cli启动 然后连的docker的reids和mysql。把laradock当成一个工具箱 快捷开启一些工具例如 rmq、kafak、 es不用在本地捣鼓环境,所以我本地只保留一个最新版php环境

2年前 评论
lun1bz 2年前
lun1bz 2年前
Latent (作者) (楼主) 2年前
Latent (作者) (楼主) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!