国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 石景山区| 赣州市| 镇康县| 怀安县| 花莲县| 凉山| 榆林市| 娱乐| 通城县| 全椒县| 京山县| 石家庄市| 抚顺市| 资阳市| 剑阁县| 宾川县| 青河县| 延长县| 昌都县| 开化县| 鄂温| 平湖市| 两当县| 新安县| 双柏县| 沙雅县| 固安县| 五大连池市| 恩平市| 山丹县| 望谟县| 开阳县| 中方县| 安图县| 澎湖县| 马山县| 曲靖市| 甘孜| 米泉市| 绍兴县| 汾西县|