国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 服務器 > Web服務器 > 正文

使用Docker compose編排Laravel應用的方法

2024-09-01 13:55:17
字體:
供稿:網(wǎng)友

前言

Laravel官方開發(fā)環(huán)境推薦的是Homestead(其實就是一個封裝好的Vagrant box),我感覺這個比較重,于是自己用Docker compose編排了一套開發(fā)環(huán)境,在這里分享下。

環(huán)境要求

先要安裝好Docker 和 Docker compose,而且Docker 倉庫鏡像最好換成國內(nèi)的。一般地,我開發(fā)電腦上會運行一個Vagrant,然后再在里面運行Docker等應用。

主要思路

Docker官方推薦的是一個容器運行一個服務,所以會有Compose編排,各個服務間通過容器互聯(lián)技術通信,比如Php服務連接Mysql只用把Host名寫成容器名,內(nèi)部會直接轉(zhuǎn)換成具體ip。代碼目錄使用數(shù)據(jù)卷從容器內(nèi)映射到宿主機,配置文件(Nginx等)也是通過數(shù)據(jù)卷映射到容器內(nèi)。

實踐

這套服務我已經(jīng)封裝好了,平時用的話只用clone下來直接使用,我這里主要講下實現(xiàn)思路。

項目地址:https://github.com/rootrl/php-environment-with-docker

我的項目目錄結構:

php-environment-with-docker/├── bin│ ├── composer│ ├── getContainerIp│ └── php├── conf│ ├── nginx│ │ └── conf.d│ │ └── nginx.conf│ └── redis│ └── redis.conf├── docker-compose.yaml├── Dockerfile.php├── LICENSE├── README.MD└── start
  1. bin 這里面都是封裝的命令行工具,其實也是Docker容器服務,只不過他們都是用完即走的服務。
  2. conf 該目錄都是應用的配置目錄,會使用Volumn映射到容器內(nèi)
  3. docker-composer.yaml compose 的編排文件,下面會具體講到
  4. Dockerfile.php php的鏡像構建(里面會有一些定制,比如改dns,裝特殊擴展)
  5. start 運行./start就可以啟動所有服務,重啟也可以運行此命令

docekr-compose.yaml

此文件是compose的編排文件

version: '2'services:nginx: depends_on:  - "php" image: "nginx" volumes:  - "$PWD/conf/nginx/conf.d:/etc/nginx/conf.d"  - "$PWD/www:/usr/share/nginx/html" ports:  - "8888:80" networks:  - oa-network container_name: "oa-nginx" command: /bin/bash -c "mkdir -p /var/www && ln -s /usr/share/nginx/html /var/www && nginx -g 'daemon off;'"php: image: "oa-php-fpm" build:   context: .  dockerfile: "Dockerfile.php" networks:  - oa-network container_name: "oa-php-fpm" volumes:  - "$PWD/www:/var/www/html"mysql: image: mysql:5.7 volumes:  - "$PWD/db_data:/var/lib/mysql" environment:  MYSQL_ROOT_PASSWORD: root123  MYSQL_DATABASE: oa  MYSQL_USER: oa  MYSQL_PASSWORD: oa123 ports:  - "3306:3306" networks:  - oa-network container_name: "oa-mysql"redis: image: "redis" ports:  - "6379:6379" networks:  - oa-network volumes:  - "$PWD/conf/redis/redis.conf:/usr/local/etc/redis/redis.conf" container_name: "oa-redis"networks:oa-network: driver: bridge

這里定義了php-fpm、nignx、mysql、redis四個服務(如果需要其他服務,自行添加)。然后定義了一個公共的networks,這樣容器內(nèi)都可以很方便地進行通信。

比如nginx.conf中

server {  listen    80;  server_name localhost;  root /usr/share/nginx/html/public;  index index.php index.html;  location / {  try_files $uri $uri/ /index.php?$query_string;  }  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 /var/www/html/public/$fastcgi_script_name;    include    fastcgi_params;  }}

這里與php-fpm的連接方式:php:9000

Dockerfile.php

FROM php:7.2-fpm  Run echo "nameserver 223.5.5.5" >> /etc/resolv.conf /  && echo "nameserver 223.6.6.6" >> /etc/resolve.conf /  && apt-get update /  && apt-get install -y /    libfreetype6-dev /    libjpeg62-turbo-dev /    libpng-dev /  && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ /  && docker-php-ext-install -j$(nproc) gd /  && docker-php-ext-install mysqli pdo_mysql /  && pecl install swoole /  && pecl install redis /  && docker-php-ext-enable swoole redis

這是Php鏡像構建,這里改了dns服務器,并安裝了若干php擴展。

使用

啟動

./start 啟動所有服務

命令行

./bin/php -v# Laravel artisan./bin/php artisan

總結

具體可訪問:https://github.com/rootrl/php-environment-with-docker

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關教程知識閱讀請移步到服務器教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 万宁市| 东丰县| 天祝| 甘孜| 于都县| 安溪县| 电白县| 林州市| 利辛县| 磴口县| 平塘县| 青州市| 健康| 定南县| 鹤壁市| 永平县| 邢台市| 洪泽县| 沅江市| 那曲县| 庆城县| 英吉沙县| 凤阳县| 江都市| 萝北县| 饶阳县| 奇台县| 涿州市| 洪泽县| 屯门区| 阳谷县| 达拉特旗| 蓬安县| 大名县| 于都县| 信丰县| 灵璧县| 庆云县| 寻乌县| 隆化县| 日土县|