有大佬分享一下docker部署laravel或thinkphp的吗?

有大佬分享一下docker部署laravel、thinkphp的吗?
单个部署倒不是啥问题,主要是最近公司部分项目服务器到期 决定换成618新购服务器,之前都是自己搭建的负载均衡,一直想用docker的方式部署,奈何没太多实践经验,在此请教一下大佬!
主要问题:

  1. php-fpm的一些配置直接打包镜像的时候配置好还是挂载配置文件?
  2. php-fpm慢日志、错误日志怎么收集?
  3. 通过每台服务器启动容器挂载的方式还是将项目打包成镜像的方式? 项目日志怎么收集?
  4. 如果docker-swarm部署 每台服务器只能部署nginx+fpm方式 在前置一台负载均衡nginx?

先问这么些吧:sweat_smile:

方案:
www.putyy.com/article/57
www.putyy.com/article/58

本作品采用《CC 协议》,转载必须注明作者和本文链接
LW放下
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 6
playmaker
3年前 评论
putyy (楼主) 3年前
jiangjun

1.php-fpm配置文件和项目建议都使用打包的形式,一个宿主机可能运行多个服务。宿主机对容器里面的东西无感

2.可以将项目日志,php-fpm的日志通过挂载出来

3.每个docker里面运行php-fpm+nginx

3年前 评论
putyy (楼主) 3年前

这个文件放到项目根目录 docker-composer.yml

version: "3"

services:
  php:
    build:
      context: .
    container_name: material_php
    working_dir: /var/www
    volumes:
      - ./:/var/www:cached
      - ${DOCKER_PHP_LOG_DIR}:/var/log/php:cached
      - ${DOCKER_PHP_CONFIG_DIR}:/usr/local/etc/php:cached
      - ./ini/conf/supervisor/:/etc/supervisor/
    ports:
      - "${DOCKER_PHP_SERVE_PORT}:8000"
      - "${DOCKER_PHP_PORT}:9000"
    stdin_open: true
    tty: true
    environment:
      - TZ=Asia/Shanghai

    depends_on:
      - mysql
      - redis

  nginx:
    container_name: material_nginx
    build:
      context: ./ini/docker/nginx
    volumes:
      - ${DOCKER_NGINX_CONFIG_DIR}:/etc/nginx:cached
      - ${DOCKER_NGINX_LOG_DIR}:/var/log/nginx:cached
      - ./:/var/www
    ports:
      - "${DOCKER_NGINX_PORT}:80"
      - "${DOCKER_NGINX_SSL_PORT}:443"
    environment:
      - TZ=Asia/Shanghai
    depends_on:
      - php

  redis:
    build:
      context: ./ini/docker/redis
    container_name: material_redis
    ports:
      - "${DOCKER_REDIS_PORT}:6379"
    volumes:
      - ${DOCKER_REDIS_CONFIG_DIR}:/usr/local/etc/redis:cached

  mysql:
    image: mysql:5.7
    container_name: material_mysql
    ports:
      - "${DOCKER_MYSQL_PORT}:3306"
    volumes:
      - material_mysql_data:/var/lib/mysql:cached
    environment:
      MYSQL_DATABASE: laravue
      MYSQL_USER: laravue
      MYSQL_PASSWORD: laravue
      MYSQL_ROOT_PASSWORD: root

volumes:
  material_mysql_data:
    external: false
3年前 评论
sunny123456 3年前
putyy (楼主) 3年前
liuyuit (作者) 3年前
liuyuit (作者) 3年前
sunny123456 3年前

我用的k8s和 rancher,代码打包到php-fpm容器,日志和数据库用 pv ,配置文件可以用 configmap 或者 secret,然后ingress转发php-fpm就行

流程就是是代码合并coding 的 release 分支后,触发流水线自动构建php-fpm镜像,推到腾讯云的镜像仓库,然后触发 rancher 的 webhook,根据配置,rancher 会自动滚动部署

3年前 评论
putyy (楼主) 3年前
mouyong

github.com/mouyong/docker-php

适用于 laravel 项目。

3年前 评论
putyy (楼主) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!