zoukankan      html  css  js  c++  java
  • Docker-用LaraDock搭建PHP环境

    简介

    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
    

    参考资料:

  • 相关阅读:
    【转】【SEE】基于SSE指令集的程序设计简介
    【转】【Asp.Net】asp.net服务器控件创建
    ControlTemplate in WPF ——ScrollBar
    ControlTemplate in WPF —— Menu
    ControlTemplate in WPF —— Expander
    ControlTemplate in WPF —— TreeView
    ControlTemplate in WPF —— ListBox
    ControlTemplate in WPF —— ComboBox
    ControlTemplate in WPF —— TextBox
    ControlTemplate in WPF —— RadioButton
  • 原文地址:https://www.cnblogs.com/stringarray/p/12900430.html
Copyright © 2011-2022 走看看