<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          使用 Docker 高效搭建本地開發(fā)環(huán)境(詳細教程)

          共 4735字,需瀏覽 10分鐘

           ·

          2023-06-21 22:30

          Docker本地開發(fā)環(huán)境的好處

          試錯

          對開發(fā)者而言,每天會催生出的各式各樣的新技術都需要嘗試,然而開發(fā)者卻不太可能為他們一一搭建好環(huán)境并進行測試。時間非常寶貴,正是得益于?Docker,讓我們有可能在一條或者幾條命令內就搭建完環(huán)境,而且這個環(huán)境大到一個特定版本的操作系統(tǒng),小到一個軟件。Docker 有一個傻瓜化的獲取軟件的方法,Docker后臺會自動獲得環(huán)境鏡像并且運行環(huán)境。

          統(tǒng)一開發(fā)和生產(chǎn)環(huán)境

          對于一般的小公司來說,搭建一個公用的開發(fā)環(huán)境是一件不那么劃算的事情。那么就可以用Docker來統(tǒng)一開發(fā)環(huán)境,因為不管你用的是WindowsMac?還是?Ubuntu。如果生產(chǎn)環(huán)境也使用的Docker的話,你甚至可以直接打包一套環(huán)境,直接丟上去就可以運行了,再也不用擔心開發(fā)-生產(chǎn)環(huán)境之間的差異了。

          高性能

          虛擬機的粒度是虛擬出的機?,而Docker的粒度則是被限制的應用?,相比較而言 Docker 的內存占用更少,更加輕量級,性能也更優(yōu)。

          而秒級的啟動,也可以讓我們啟動電腦時候,開發(fā)環(huán)境的運行是無感知的。

          成果展示

          我們可能經(jīng)常要給用戶或者是同事展示一樣功能的,但是搭建演示環(huán)境的過程卻是非常麻煩的。現(xiàn)在可以直接將我們的鏡像打包丟過去,而不必去做任何環(huán)境配置的工作,同時也不必擔心他們的環(huán)境配置會導致我們的產(chǎn)品無法運行。

          安裝Docker

          mac平臺下,就是去下載一個dmg的安裝文件。下載好了之后,雙擊,然后拖入就可以了,windows應該也是類似的。

          就是安裝qq一樣簡單,傻瓜式的。

          附上dockerhub上的下載鏈接:

          https://hub.docker.com/search/?type=edition&offering=community&q=

          成功之后屬于docker version如果出來版本信息就是安裝成功,類似如下

          Client:?Docker?Engine?-?Community
          ?Version:???????????18.09.0
          ?API?version:???????1.39
          ?Go?version:????????go1.10.4
          ?Git?commit:????????4d60db4
          ?Built:?????????????Wed?Nov??7?00:47:43?2018
          ?OS/Arch:???????????darwin/amd64
          ?Experimental:??????false

          Server:?Docker?Engine?-?Community
          ?Engine:
          ??Version:??????????18.09.0
          ??API?version:??????1.39?(minimum?version?1.12)
          ??Go?version:???????go1.10.4
          ??Git?commit:???????4d60db4
          ??Built:????????????Wed?Nov??7?00:55:00?2018
          ??OS/Arch:??????????linux/amd64
          ??Experimental:?????true

          安裝docker-composer

          一般來說,mac安裝docker之后就會攜帶docker-composer

          其他平臺,附上下載鏈接:

          https://github.com/docker/compose/releases

          安裝完成之后可以輸入命令檢測

          ???~?docker-compose?version
          docker-compose?version?1.23.2,?build?1110ad01
          docker-py?version:?3.6.0
          CPython?version:?3.6.6
          OpenSSL?version:?OpenSSL?1.1.0h??27?Mar?2018

          如果沒有出現(xiàn)版本相關信息,可以嘗試再次安裝

          下載laradock

          laradock的項目地址是https://github.com/laradock/laradock?我們找一個地方clone下來即可

          我這里是在我的用戶目錄下面新建了一個Docker目錄,然后clone了項目下來

          配置env文件

          1. 拷貝example成.env

            cp?env-example?env
          2. .env文件中APP_CODE_PATH_HOST是本地路徑?APP_CODE_PATH_CONTAINER是遠程映射路徑,看需求修改,大多數(shù)情況下是不需要的

          3. 如果有調試代碼的需求,也可以將PHP_FPM_INSTALL_XDEBUGWORKSPACE_INSTALL_XDEBUG兩個選項打開

          4. 如果還有其他的需求,可以在.env里面搜索,里面已經(jīng)將大多數(shù)配置項都給獨立出來了

          運行容器

          進入到laradock的工作目錄下面,就是clone的項目的根目錄我的工作目錄就是~/Docker/laradock

          然后運行如下命令

          docker-compose?up?-d?nginx?mysql

          就會看到在自動執(zhí)行build操作,并且build完了之后自動后臺啟動了如下容器

          • nginx
          • php-fpm
          • workspace
          • mysql

          那是因為php-fpmworkspace還有docker-in-docker是隨nginx一并啟動的

          所以實際上

          docker-compose?up?-d?nginx?mysql

          docker-compose?up?-d?nginx?workspace?php-fpm?mysql

          這兩條命令的效果是一樣的,可以都帶上,也可以不寫。

          up命令在第一次啟動的時候實際上就是build?+?start的組合,如果容器不存在,那么就build一個容器,并且啟動服務,如果容器存在那么直接啟動服務,大概就是這么個意思?-d的意思是后臺運行

          配置web項目

          一下是我laravel項目的部分配置

          DB_CONNECTION=mysql
          DB_HOST=mysql
          DB_PORT=3306
          DB_DATABASE=blog
          DB_USERNAME=root
          DB_PASSWORD=root
          ......

          注意,數(shù)據(jù)庫主機必須得是別名才可以,如果DB_CONNECTION這個地方輸入172.0.0.1或者是localhost都是會連接失敗的。

          在其它的項目中也必須是這樣的,配置數(shù)據(jù)庫鏈接,redis,或者MemCache鏈接都必須設置成具體的別名。或者你說我找到各個容器的ip,可以嘛。可以,但是并不建議這樣做,因為ip是會變動的。

          具體別名可以參考./docker-compose.yml文件中的設置

          這個主要的技術實現(xiàn)應該是用了docker的虛擬網(wǎng)橋技術.

          配置宿主機的host

          因為,往往我們訪問的時候,是通過宿主機上面的瀏覽器發(fā)送請求的,所以,配置宿主機上面的host必不可少。

          vim?/etc/hosts

          我這里加入一條我自己設置的虛擬域名

          127.0.0.1???????blog.test

          然后保存,刷新下host。

          配置nginx

          進入到./laradock/nginx/sites文件夾,然后ll一下,我們會發(fā)現(xiàn),laradock已經(jīng)幫我們放了好多列舉的文件進來

          app.conf.example?default.conf?laravel.conf.example?symfony.conf.example

          根據(jù)需求拷貝一份,然后修改一下就可以了,都不是很難,由于我們本地是laravel開發(fā)的博客項目,所以我就直接拷貝laravel.conf.example,然后使用vim打開

          cp?laravel.conf.example?blog.conf?vim?blog.conf

          打開后的內容...

          server?{

          ????listen?80;
          ????listen?[::]:80;

          ????#?For?https
          ????#?listen?443?ssl;
          ????#?listen?[::]:443?ssl?ipv6only=on;
          ????#?ssl_certificate?/etc/nginx/ssl/default.crt;
          ????#?ssl_certificate_key?/etc/nginx/ssl/default.key;

          ????server_name?laravel.test;
          ????root?/var/www/laravel/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;
          ????????#fixes?timeouts
          ????????fastcgi_read_timeout?600;
          ????????include?fastcgi_params;

          我們會發(fā)現(xiàn),如果沒有特殊需求的話,這個里面大多數(shù)地方我們并不需要修改。我們只需要關注server_nameroot這兩個參數(shù),把這個里面的laravel換成我們項目名就可以了,這里我們換成blog

          下面是修改后的內容

          server?{

          ????listen?80;
          ????listen?[::]:80;

          ????#?For?https
          ????#?listen?443?ssl;
          ????#?listen?[::]:443?ssl?ipv6only=on;
          ????#?ssl_certificate?/etc/nginx/ssl/default.crt;
          ????#?ssl_certificate_key?/etc/nginx/ssl/default.key;

          ????server_name?blog.test;
          ????root?/var/www/blog/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;
          ????????#fixes?timeouts
          ????????fastcgi_read_timeout?600;
          ????????include?fastcgi_params;

          訪問

          輸入url

          http://blog.test/

          瀏覽器返回結果

          瀏覽 69
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  丰满熟女一区二区三区在线播放 | 亚洲一区二区政府在线播放IV | 91这里只有精品视频 | 免费播放一级A片 | 在线伊人网 |