使用docker搭建laravel環境

oliver-l 發表於 2021-04-04

根據上篇內容大致對docker入了個門,現在進一步搭建開發環境瞭解docker

docker安裝php

上篇文章我已經安裝了nginx環境,現在這裡演示安裝php+nginx環境

首先拉取官方映象,標籤為7.2-fpm

使用命令docker pull php:7.2-fpm拉取映象

使用docker搭建laravel環境

啟動php容器

使用命令docker run --name myphp-fpm -v /root/nginx/www:/www -itd php:7.2-fpm啟動php容器

其中--name myphp-fpm : 將容器命名為 myphp-fpm

-v /root/nginx/www:/www : 將主機中專案的目錄 www 掛載到容器的 /www

建立目錄mkdir -p /root/nginx/conf/conf.d

在該目錄下新增 /root/nginx/conf/conf.d/test-php.conf 檔案,內容如下:

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm index.php;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ \.php$ {
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /www/$fastcgi_script_name;
        include        fastcgi_params;
    }
}

配置檔案說明:

  • php:9000: 表示 php-fpm 服務的 URL。
  • /www/: 是 myphp-fpm 中 php 檔案的儲存路徑,對映到本地的 /root/nginx/www 目錄。

啟動nginx容器

docker run --name php-nginx -p 8083:80 -d \
    -v /root/nginx/www:/usr/share/nginx/html:ro \
    -v /root/nginx/conf/conf.d:/etc/nginx/conf.d:ro \
    --link myphp-fpm:php \
    nginx

引數說明

  • -p 8083:80: 埠對映,把 nginx 中的 80 對映到本地的 8083 埠。
  • ~/nginx/www: 是本地 html 檔案的儲存目錄,/usr/share/nginx/html 是容器內 html 檔案的儲存目錄。
  • ~/nginx/conf/conf.d: 是本地 nginx 配置檔案的儲存目錄,/etc/nginx/conf.d 是容器內 nginx 配置檔案的儲存目錄。
  • –link myphp-fpm:php: 把 myphp-fpm 的網路併入 nginx,並通過修改 nginx 的 /etc/hosts,把域名 php 對映成 127.0.0.1,讓 nginx 通過 php:9000 訪問 php-fpm。

接下來我們在 /root/nginx/www 目錄下建立 index.php,程式碼如下:

<?php
echo phpinfo();
?>

訪問域名,可成功訪問表示環境配置成功

使用docker搭建laravel環境

教程其實是參考這裡Docker 安裝 PHP

docker安裝mysql

使用命令docker pull mysql:5.7.33拉取mysql5.7版本映象

使用docker搭建laravel環境

使用命令docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.33執行容器

  • -p 3306:3306 :對映容器服務的 3306 埠到宿主機的 3306 埠,外部主機可以直接通過 宿主機ip:3306 訪問到 MySQL 的服務。
  • MYSQL_ROOT_PASSWORD=123456:設定 MySQL 服務 root 使用者的密碼。

可以使用命令docker exec -it mysql-test mysql -hlocalhost -uroot -p訪問mysql容器
使用docker搭建laravel環境

建立遠端訪問賬號

  • 建立遠端訪問賬號:CREATE USER ‘test‘@’%’ IDENTIFIED WITH mysql_native_password BY ‘123456’;
  • 賬號授權:GRANT ALL PRIVILEGES ON . TO ‘test‘@’%’;
  • 重新整理許可權:FLUSH PRIVILEGES;

使用docker搭建laravel環境

使用連線工具可成功連線
使用docker搭建laravel環境

docker安裝redis

使用命令docker pull redis:latest拉取最新的redis版本映象

使用docker搭建laravel環境

使用命令docker run -itd --name redis-test -p 6379:6379 redis執行容器

使用docker搭建laravel環境

可正常使用redis服務
使用docker搭建laravel環境

laradock配置開發環境

1.克隆laradock包到本地指定資料夾(與專案同級)

#碼雲
git clone https://gitee.com/anviod/laradock.git
#github
git clone https://github.com/Laradock/laradock.git

2.進入 laradock 目錄將 env-example 重新命名為 .env

3.執行命令docker-compose up -d nginx mysql執行容器

執行完成後可通過docker ps命令檢視一下容器執行情況

使用docker搭建laravel環境

4.在laradock同級目錄建立wwwroot目錄並新增laravel專案

進入laradock目錄,執行命令docker-compose exec workspace bash進入Workspace容器

使用docker搭建laravel環境

通過使用 Composer 安裝 Laravel 安裝器

composer global require laravel/installer

在wwwroot目錄上,執行laravel new blog新增一個新的laravel專案

5.配置訪問域名

我們需要到 laradock 下編輯 .env 中的 APP_CODE_PATH_HOST 配置項

APP_CODE_PATH_HOST=../wwwroot/

這樣就相當於為 wwwroot 與 Docker 的 /var/www 目錄建立了軟連結,然後我們修改 laradock/nginx/sites/default.conf 中的對映關係:

使用docker搭建laravel環境

接下來,需要重啟 Docker 的 Nginx:

docker-compose up -d nginx

使用docker搭建laravel環境

配置完成後通過埠訪問可正常訪問,也算配置成功啦

使用docker搭建laravel環境

這裡我們設定的場景是新建一個應用,如果是多個應用的話要怎麼辦呢?也很簡單,就是在上述 wwwroot 目錄下建立多個應用目錄,然後在 laradock/nginx/sites 下對應建立多個配置檔案,最後不要忘記在系統 /etc/hosts 中配置相關域名繫結 IP 即可。

部分內容參考使用 Laradock 搭建基於 Docker 的 PHP 開發環境

本作品採用《CC 協議》,轉載必須註明作者和本文連結