V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
awanganddong
V2EX  ›  Docker

docker-compose 配置 nginx 和 PHP 的问题

  •  
  •   awanganddong · 2021-07-14 13:57:20 +08:00 · 1539 次点击
    这是一个创建于 1260 天前的主题,其中的信息可能已经有所发展或是发生改变。
    #docker-compose 版本
    version: '3'
    services:
      php:
        container_name: php
        build: ./dockerfile/php
        expose:
          - "9000"
        ports:
          - "9001:9000"
        restart: always
        volumes:
          - /Users/www:/www
          - ${ROOT}/docker/logs/php:/var/log/php
          - ${ROOT}/docker/conf/php/php.ini:/etc/php/php.ini:rw
          - ${ROOT}/docker/conf/php/php-fpm.conf:/etc/php/php-fpm.conf:rw
          - ${ROOT}/docker/conf/php-fpm.d:/etc/php/php-fpm.d
        ##command: php-fpm -y /etc/php/php-fpm.conf -c /etc/php/php.ini
        networks:
          - lnmp-networks
      nginx:
        container_name: nginx
        build: ./dockerfile/nginx
        ports:
          - "8081:80"
        restart: always
        volumes:
          - /Users/www:/www
          - ${ROOT}/docker/logs/nginx:/var/log/nginx
          - ${ROOT}/docker/conf/nginx/conf.d:/etc/nginx/conf.d
          - ${ROOT}/docker/conf/nginx/nginx.conf:/etc/nginx/nginx.conf
        depends_on:
          - php
        networks:
          - lnmp-networks
    networks:
      lnmp-networks:
    
    
    dockerfile 版本
    
    FROM php:7.2-fpm
    
    RUN sed -i "s@http://deb.debian.org@http://mirrors.aliyun.com@g" /etc/apt/sources.list && rm -Rf /var/lib/apt/lists/* &&  cat /etc/apt/sources.list
    
    RUN apt-get update \
    	&& apt-get install sudo -y \
    	#安装 vim 文本编辑器
    	&& apt-get install vim -y \
    	#安装 wget 下载工具
    	&& apt-get install wget -y \
    	#安装网络管理工具
    	&& apt-get install net-tools -y \
    	#安装 ping
    	&& apt-get install iputils-ping -y \
    	#安装 telnet
    	&& apt-get install telnet -y \
    	#安装进程管理命令 ps, top, vmstat, w, kill, free, slabtop, and skill
    	&& apt-get install procps -y \
    	#安装 C/C++编译包,该软件包,编译 c/c++所需要的软件包也都会被安装。
    	#该包包含 gcc,g++,make 等`
    	&& apt-get install build-essential -y
    	#安装 zip 依赖 zlib
    
    #ENTRYPOINT php-fpm -c /etc/php/php.ini -y /etc/php/php-fpm.conf
    #EXPOSE 9000
    

    如果按现在这种配置的话,php-fpm 是按照默认配置文件来读取的。 但是如果我在 dockerfile 里边或者 docker-compose 里边增加对配置文件的制定,然后就开始报错。

    想问下 到底是什么原因造成的。 注释的文件就是我指定的配置文件。

    8 条回复    2021-07-14 23:21:20 +08:00
    awanganddong
        1
    awanganddong  
    OP
       2021-07-14 13:58:14 +08:00
    Recreating php ... done
    Recreating nginx ... done
    Attaching to php, nginx
    php exited with code 0
    php exited with code 0
    php exited with code 0
    php exited with code 0
    php exited with code 0

    报错信息如上
    Aliencn
        2
    Aliencn  
       2021-07-14 15:07:34 +08:00
    加个参数--nodaemonize
    coolcoffee
        3
    coolcoffee  
       2021-07-14 15:16:06 +08:00
    我觉得没有必要去改启动参数 ENTRYPOINT, 你需要改哪个文件,拉出来改好再映射回原路径就好了。 不然万一镜像升级,启动参数有变化,你到时候又会跑不起来。
    awanganddong
        4
    awanganddong  
    OP
       2021-07-14 16:00:40 +08:00
    @Aliencn 我看下
    @coolcoffee 我明白你的意思

    ```
    这是我问某位大佬的解决方案
    你其实想要自定义配置文件 通过挂载的方式随时更改 重启生效
    1 方法一 fpm 启动是 -c php.ini -y fpm.conf 指定
    2 方法二 把配置文件挂载到 fpm 启动时不带参数的默认路径下的配置文件
    ```
    lvdongxiao
        5
    lvdongxiao  
       2021-07-14 16:29:04 +08:00
    fpm 镜像的配置文件默认是 /usr/local/etc/php/php.ini 。你把这个文件复制出来,改好配置。再在 volumes 配置中映射到这个路径
    siguretto
        6
    siguretto  
       2021-07-14 16:59:16 +08:00
    php.ini 或者 php-fpm.conf 有问题吧,其实应该贴出这两个配置文件。
    盲猜一个是 fpm 配置设成了 root 用户导致
    awanganddong
        7
    awanganddong  
    OP
       2021-07-14 22:20:14 +08:00
    ```
    version: '3'
    services:
    php:
    container_name: php
    # build: ./dockerfile/php
    image: php:7.2-fpm
    expose:
    - "9000"
    ports:
    - "9001:9000"
    restart: always
    volumes:
    - /Users/www:/www
    - /${ROOT}/docker/logs/php:/var/log/php
    - /${ROOT}/docker/conf/php/php.ini:/etc/php/php.ini:rw
    - /${ROOT}/docker/conf/php/php-fpm.conf:/usr/local/etc/php-fpm.conf:rw
    - /${ROOT}/docker/conf/php-fpm.d:/etc/php/php-fpm.d
    networks:
    - lnmp-networks
    nginx:
    container_name: nginx
    build: ./dockerfile/nginx
    ports:
    - "8081:80"
    restart: always
    volumes:
    - /Users/www:/www
    - /${ROOT}/docker/logs/nginx:/var/log/nginx
    - /${ROOT}/docker/conf/nginx/conf.d:/etc/nginx/conf.d
    - /${ROOT}/docker/conf/nginx/nginx.conf:/etc/nginx/nginx.conf
    depends_on:
    - php
    networks:
    - lnmp-networks
    networks:
    lnmp-networks:

    ```
    这个是和苹果的一一对应的
    awanganddong
        8
    awanganddong  
    OP
       2021-07-14 23:21:20 +08:00
    找到问题了。
    php-fpm  镜像的配置文件,你必须全部复制一遍。这样才可以。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1382 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 17:38 · PVG 01:38 · LAX 09:38 · JFK 12:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.