Docker-用LaraDock搭建PHP环境 docker搭建php开发环境

   2023-02-09 学习力0
核心提示:简介LaraDock 致力于简化创建开发环境过程,能够帮助我们在 Docker 上快速搭建 PHP 开发环境。 它预装了 Docker 镜像,为我们提供了一站式的开发环境,而不需要再去在本地机器安装 PHP、Nginx、MySQL 以及其他很多开发过程中需要的软件。特点:在 PHP 版本:7

简介

LaraDock 致力于简化创建开发环境过程,能够帮助我们在 Docker 上快速搭建 PHP 开发环境。 它预装了 Docker 镜像,为我们提供了一站式的开发环境,而不需要再去在本地机器安装 PHP、Nginx、MySQL 以及其他很多开发过程中需要的软件。

特点:

  • 在 PHP 版本:7.0,5.6.5.5...之中可以简单切换。
  • 可选择你最喜欢的数据库引擎,比如:MySQL, Postgres, MariaDB...
  • 可运行自己的软件组合,比如:Memcached, HHVM, Beanstalkd...
  • 所有软件运行在不同的容器之中,比如:PHP-FPM, NGINX, PHP-CLI...
  • 通过简单的编写 Dockerfile 容易定制任何容器。
  • 所有镜像继承自一个官方基础镜像(Trusted base Images)
  • 可预配置Laravel的Nginx环境
  • 容易应用容器中的配置 配置文件(Dockerfile)
  • 最新的 Docker Compose 版本(docker-compose)
  • 所有的都是可视化和可编辑的
  • 快速的镜像构建
  • 每周都会有更新...

相关资料:

LaraDock 官网:http://laradock.io

LaraDock Github:https://github.com/LaraDock/laradock 国内下载速度有些慢,可以使用Gitee:https://gitee.com/mirrors/Laradock

Docker扫盲:

安装

请确保已安装Docker,LaraDock 镜像的原理先不介绍,直接进入安装步骤。

1. 建立工作目录

新建 webroot 目录,laradock 和项目的代码都将放在该目录下(也可以直接使用以前的 web 根目录):

$ mkdir webroot && cd webroot

2. 克隆 LaraDock 代码

进入 webroot 目录,执行以下命令:

$ git clone https://github.com/Laradock/laradock.git
// 或 git clone https://gitee.com/mirrors/Laradock.git

3. 生成 LaraDock 配置文件

进入 laradock 目录,执行以下命令:

$ cp env-example .env

如需配置 Nginx 端口、Mysql 密码等,均在 .env 文件中设置即可。

# 本机项目存放的目录,默认是和laradock同级,视个人情况修改
APP_CODE_PATH_HOST=../

# 容器中存放项目的目录,是会和本机项目的目录建立起软链接
APP_CODE_PATH_CONTAINER=/var/www

# 存放数据的目录
DATA_PATH_HOST=~/.laradock/data

4. 开启容器

更改完自己的项目配置后,运行docker-compose构建容器。
在 laradock 目录下执行以下命令,可以选择自己需要启动的容器:

$ docker-compose up -d nginx mysql redis

由于Laradock中的软件源并没有为国内做优化,都是默认在国外的。所以构造速度视网络情况,如果比较慢可以只构建基本的nginx和mysql,它们会自动构建php-fpm 和 workspace这两个两个容器,后续需要什么服务等要用到时候再去构建。如果特别的慢可以去找下Laradock国内修改版的。

默认情况下,创建的容器具有当前目录名称作为后缀(例如laradock_workspace_1

注:所有Web服务器容器nginxapache..依赖于php-fpm,这意味着如果您运行其中任何一个,它们将自动php-fpm为您启动容器,因此无需在 up 命令中明确指定它。

创建项目(这里我们用Laravel为例)

构建完成后,在laradock同级目录下创建一个laravel的项目叫myproject

$ composer create-project --prefer-dist laravel/laravel myproject

如果composer安装速度太慢请更换composer源为国内镜像。

laravel install :

composer install
cp .env.example .env
php artisan key:generate
chmod -R 777 storage
chmod -R 777 bootstrap/cache
// DB的配置根据之前的配置修改,多个 Docker 容器间的关系类似于依赖网络进行连接的主机

现在打开http://localhost 项目返回404,需要配置nginx。

进去laradock下的nginx/sites下复制出laravel.conf来更改配置:

$ cd laradock/nginx/sites
$ cp laravel.conf.example laravel.conf
$ vim laravel.conf

将域名和路径改下:

.
.
server_name myproject.test;
root /var/www/myproject/public;
.
.

修改完后重启laradock_nginx,也就是重启nginx

$ docker restart laradock_nginx_1

重启成功后,编辑hosts

$ sudo vim /etc/hosts

新增需要解析的网站,将0.0.0.0和之前设定的域名关联

.
.
0.0.0.0 myproject.test
.
.

修改完后浏览器打开http://myproject.test就可以访问了

补充

数据库配置

基本配置

然后进入数据库容器:

docker exec -it $database_container_name bash

根据 docker-compose.yml 中的设置,通过 root 进入数据库服务:

mysql -udefault -psecret

由于多个 Docker 容器间的关系类似于依赖网络进行连接的主机,要想通过 PHP 容器中的脚本访问 MySQL 容器的数据库服务,需要具有远程连接的数据库用户,执行以下命令进行创建:

GRANT ALL PRIVILEGES ON *.* TO username@'%' IDENTIFIED BY 'password';

注意以下几点:

  1. . 表示对所有数据库的所有表都具有权限;

  2. % 表示不限制连接的主机 IP,为了安全起见,这里可以把 % 改为 php。注意,这里的 php 其实相当于一个域名,Docker 的内置 DNS 会将其解析为 PHP 容器的地址;

  3. 修改 username 和 password 为自定义的用户名和密码。

远程连接

若想要在本地(非 Docker 宿主机)连接到数据库容器,需要利用端口映射,将数据库 Docker 的 3306 端口映射到主机的某个端口(如:12345),然后在本地通过访问服务器的 $server_ip:12345 并附带具有远程访问权限的用户名和密码进行远程连接(注意 % 的问题)。

在本文所用的 docker-compose.yml 中已经默认打开了 3306:3306 的端口映射,大家可以根据需要进行设置。

创建数据库

通过以下方式创建一个数据库并设置字符集:

CREATE DATABASE `database_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin

执行 SQL 文件

我们可以把本地的数据库导出为 .sql 文件,然后在上传到数据库容器中并执行,首先在本地将 SQL 文件上传到宿主服务器:

scp xxx.sql root@your_server_ip:/

然后在宿主服务器中将该文件转移到数据库容器中的共享数据卷中,执行:

mv /xxx.sql path/to/docker-compose.yml/database

最后进入数据库容器并进入 MySQL 数据库服务,执行:

source /path/to/xxx.sql

参考资料:

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • php-fpm进程管理的三种模式 phpfpm子进程
    php-fpm进程管理的三种模式 phpfpm子进程
    php-fpm解读-进程管理的三种模式—程序媛大丽标明转载以示尊重 感谢原作者的分享。php-fpm进程管理一共有三种模式:ondemand、static、dynamic,我们可以在同一个fpm的master配置三种模式,看下图1。php-fpm的工作模式和nginx类似,都是一个master,多个worke
    03-08
  • nginx和php-fpm 是使用 tcp socket 还是 unix s
    tcp socket允许通过网络进程之间的通信,也可以通过loopback进行本地进程之间通信。unix socket允许在本地运行的进程之间进行通信。分析从上面的图片可以看,unix socket减少了不必要的tcp开销,而tcp需要经过loopback,还要申请临时端口和tcp相关资源。但是
    03-08
  • [PHP8] 我参加了PHP8工程师认证初学者考试beta考试
    [PHP8] 我参加了PHP8工程师认证初学者考试beta
    前几天,2022/08/05,PHP工程师认证机构PHP8 技术员认证初级考试宣布实施考试将于 2023 年春季开始。和 beta 测试完成于 2022/09/11所以我收到了。一般社团法人BOSS-CON JAPAN(代表理事:Tadashi Yoshimasa,地点:东京都世田谷区,以下简称“BOSS-CON JAPAN
    03-08
  • 将 PHP Insights 放入旧版 PJ 不是很好吗?谈论
    将 PHP Insights 放入旧版 PJ 不是很好吗?谈论
    介绍在最近的PHP系统开发中,感觉故事在理所当然包含静态分析工具的前提下进行。我的周围现有代码很脏,我很久以前安装了工具,但几乎没有检查已经观察到许多这样的案例。 (这是小说。而不是像 0 或 100 这样不允许单行错误的静态分析,一点一点,逐渐我想介
    03-08
  • PHP基于elasticsearch全文搜索引擎的开发 php使
    1.概述:全文搜索属于最常见的需求,开源的 Elasticsearch (以下简称 Elastic)是目前全文搜索引擎的首选。Elastic 的底层是开源库 Lucene。但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。Elastic 是 Lucene 的封装,提供了 REST API 的操作接
    02-09
  • php视图操作
    一、视图的基本介绍         视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态检索数据的查询。        使用视图需要MySQL5及以后的版本支持。        下面是视图的一些常见应用:        重用SQL语句;        简化复杂的S
    02-09
  • php中图像处理的常用函数 php图形图像处理技术
    php中图像处理的常用函数 php图形图像处理技术
    1.imagecreate()函数imagecreate()函数是基于一个调色板的画布。?php $im = imagecreate(200,80);                //创建一个宽200,高80的画布。$white = imagecolorallocate($im,225,35,180);     //设置画布的背景颜色imagegif($im);
    02-09
  • PHP安全之webshell和后门检测
    PHP安全之webshell和后门检测
    基于PHP的应用面临着各种各样的攻击:XSS:对PHP的Web应用而言,跨站脚本是一个易受攻击的点。攻击者可以利用它盗取用户信息。你可以配置Apache,或是写更安全的PHP代码(验证所有用户输入)来防范XSS攻击SQL注入:这是PHP应用中,数据库层的易受攻击点。防范
    02-09
  • php使用时间戳保存时间的意义 PHP获取时间戳
    时间戳记录的是格林尼治时间,使用date格式化的时候会根据你程序设置的不同时区显示不同的时间。如果使用具体时间,则还需要进行多一步转换。
    02-09
  • PHP 获取提交表单数据方法
    PHP $_GET 和 $_POST变量是用来获取表单中的信息的,比如用户输入的信息。PHP表单操作在我们处理HTML表单和PHP表单时,我们要记住的重要一点是:HTML页面中的任何一个表单元素都可以自动的用于PHP脚本:表单举例: htmlbodyform action="welcome.php" method
    02-09
点击排行