經過Laradock學Docker-配置篇

經過Laradock學Docker-配置篇

前言

衆所周知docker是當前最火熱的容器引擎,由於沙盒特性,即插即用和快速方便的部署能力受到廣大用戶的喜好。php

docker一般有兩種執行方式,一種是直接經過命令行加參數拉取、運行容器,但由於用戶的實際應用是複雜的,可能由多個容器組成,容器間存在關係,使用上可能須要重複屢次部署。 所以,須要必定的編排部署能力來簡化這個操做。html

另外一種方式就是今天咱們介紹的,經過編排文件部署的方式,也就是compose方式運行容器。Compose運行須要有對應的yml文件以及Dockerfile。 經過調用Docker/Swarm的API進行容器應用的編排。node

laradock就是一個利用Compose方式運行容器,功能完整的PHP集成研發環境。linux

環境依賴

  • Git
  • Docker >= 1.12

安裝

安裝Docker

你們能夠去官網 ,或者國內的服務提供商(如Daocloud)下載相應操做系統的安裝文件(或者在線安裝),這裏就很少敘述了。nginx

若是是linux系統的話,安裝完docker,還須要單獨安裝docker-compose。

安裝Laradock

  • 用Git克隆下源碼

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

  • 編輯配置文件

    cp env-example .envgit

    打開.env文件,修改公共變量APPLICATION的路徑,默認路徑是github

    APPLICATION=../chrome

    咱們能夠根據須要作相應修改,通常狀況下,咱們的主機上會有一個或多個項目,這樣的話作以下設置:docker

    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協議。

相關文章
相關標籤/搜索