docker-compose 配置 nginx 和 PHP 的问题

2021-07-14 13:57:20 +08:00
 awanganddong
#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 里边增加对配置文件的制定,然后就开始报错。

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

1350 次点击
所在节点    Docker
8 条回复
awanganddong
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
2021-07-14 15:07:34 +08:00
加个参数--nodaemonize
coolcoffee
2021-07-14 15:16:06 +08:00
我觉得没有必要去改启动参数 ENTRYPOINT, 你需要改哪个文件,拉出来改好再映射回原路径就好了。 不然万一镜像升级,启动参数有变化,你到时候又会跑不起来。
awanganddong
2021-07-14 16:00:40 +08:00
@Aliencn 我看下
@coolcoffee 我明白你的意思

```
这是我问某位大佬的解决方案
你其实想要自定义配置文件 通过挂载的方式随时更改 重启生效
1 方法一 fpm 启动是 -c php.ini -y fpm.conf 指定
2 方法二 把配置文件挂载到 fpm 启动时不带参数的默认路径下的配置文件
```
lvdongxiao
2021-07-14 16:29:04 +08:00
fpm 镜像的配置文件默认是 /usr/local/etc/php/php.ini 。你把这个文件复制出来,改好配置。再在 volumes 配置中映射到这个路径
siguretto
2021-07-14 16:59:16 +08:00
php.ini 或者 php-fpm.conf 有问题吧,其实应该贴出这两个配置文件。
盲猜一个是 fpm 配置设成了 root 用户导致
awanganddong
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
2021-07-14 23:21:20 +08:00
找到问题了。
php-fpm  镜像的配置文件,你必须全部复制一遍。这样才可以。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/789468

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX