通过Laradock学Docker-配置篇

智数星河
• 阅读 4643

通过Laradock学Docker-配置篇

前言

众所周知docker是当前最火热的容器引擎,因为沙盒特性,即插即用和快速方便的部署能力受到广大用户的喜爱。

docker通常有两种执行方式,一种是直接通过命令行加参数拉取、运行容器,但因为用户的实际应用是复杂的,可能由多个容器组成,容器间存在关系,使用上可能需要重复多次部署。 因此,需要一定的编排部署能力来简化这个操作。

另一种方式就是今天我们介绍的,通过编排文件部署的方式,也就是compose方式运行容器。Compose运行需要有对应的yml文件以及Dockerfile。 通过调用Docker/Swarm的API进行容器应用的编排。

laradock就是一个利用Compose方式运行容器,功能完整的PHP集成研发环境。

环境依赖

  • Git
  • Docker >= 1.12

安装

安装Docker

大家可以去官网 ,或者国内的服务提供商(如Daocloud)下载相应操作系统的安装文件(或者在线安装),这里就不多叙述了。

如果是linux系统的话,安装完docker,还需要单独安装docker-compose。
安装Laradock
  • 用Git克隆下源码

    git clone https://github.com/laradock/laradock.git

  • 编辑配置文件

    cp env-example .env

    打开.env文件,修改公共变量APPLICATION的路径,默认路径是

    APPLICATION=../

    我们可以根据需要做相应修改,一般情况下,我们的主机上会有一个或多个项目,这样的话做如下设置:

    APPLICATION=../www/

    这是什么意思呢,我们来看下docker-compose.dev.yml文件

version: "2"

services:

### Applications Code Container #############################

    applications:
      volumes:
        - ${APPLICATION}:/var/www

我们看到我们配置了一个容器applications,它映射了一个数据卷,把本地的www目录,映射到了容器内的/var/www目录

  • 查看相关编排文件配置

    version: '2'
    
    services:
    
    ### Applications Code Container #############################
    
        applications:
          image: tianon/true
    
    ### Workspace Utilities Container ###########################
    ### 为了排版,略做修改,省略了其它部分
        workspace:
          build:
            context: ./workspace
          volumes_from: applications
          
    ### PHP-FPM Container #######################################
    ### 为了排版,略做修改,省略了其它部分
        php-fpm:
          build:
            context: ./php-fpm
           
          volumes_from: applications
    ### NGINX Server Container ##################################
    ### 为了排版,略做修改,省略了其它部分
        nginx:
          build:
            context: ./nginx
          volumes_from: applications

    我们看到,刚才在compose-dev.yml定义的容器applications基于镜像:tianon/true。

    容器workspace是一个操作台容器,可以通过配置文件安装各种需要的软件如:node,yarn等等,它和php-fpm、nginx等容器都共用容器applications的数据卷,也就是说这几个写着volumes_from: - applications的容器中的路径/var/www都共用本机目录../www

  • 编辑nginx主机配置文件laradock/nginx/sites

    server {
    
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;
    
        server_name localhost;
        root /var/www/public;
        index index.php index.html index.htm;
    
        location / {
             try_files $uri $uri/ /index.php$is_args$args;
        }
    
        location ~ \.php$ {
            try_files $uri /index.php =404;
            fastcgi_pass php-upstream;
            fastcgi_index index.php;
            fastcgi_buffers 16 16k;
            fastcgi_buffer_size 32k;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
    
        location ~ /\.ht {
            deny all;
        }
    
        location /.well-known/acme-challenge/ {
            root /var/www/letsencrypt/;
            log_not_found off;
        }
    }

    因为laradock项目默认是为laravel框架配置的,所以我们看到网站的根目录默认设置为/var/www/public 。这里我们把根目录修改为我们需要的路径,如 /var/www/your-project-name/public 。如果你的项目不是基于laravel的,则可以把public去掉,或做相应修改。

    如果你使用Chrome 63以上版本进行开发,就不要把server_name设置为.dev结尾为什么?。 你可以用 .localhost, .invalid, .test, .example 等代替,个人建议用 .localhost ,这样就不用修改容器的主机的host文件了,他会默认指向IP127.0.0.1。
  • 运行容器(在laradock目录下)

    docker-compose up -d nginx

结语

到这里laradock的配置解析基本就介绍完毕了,小伙伴们赶快写个hellow world试试吧,下一篇文章我们来讲讲如何通过容器,让我们的网站支持https协议。

有疑问的同学可以来我的公号哦
通过Laradock学Docker-配置篇

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
3年前
java中比较两个时间的差值
项目背景1.某篇文稿的发布时间是publishDate,例如:2020072118:00:41。2.现要求判断该篇文稿的发布时间是否在近30天之内。publicstaticlongdayDiff(DatecurrentDate,DatepublishDate){LongcurrentTimecurrentDat
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这