#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 里边增加对配置文件的制定,然后就开始报错。
想问下 到底是什么原因造成的。 注释的文件就是我指定的配置文件。
1 awanganddong OP 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 报错信息如上 |
![]() | 2 Aliencn 2021-07-14 15:07:34 +08:00 加个参数--nodaemonize |
3 coolcoffee 2021-07-14 15:16:06 +08:00 我觉得没有必要去改启动参数 ENTRYPOINT, 你需要改哪个文件,拉出来改好再映射回原路径就好了。 不然万一镜像升级,启动参数有变化,你到时候又会跑不起来。 |
4 awanganddong OP @Aliencn 我看下 @coolcoffee 我明白你的意思 ``` 这是我问某位大佬的解决方案 你其实想要自定义配置文件 通过挂载的方式随时更改 重启生效 1 方法一 fpm 启动是 -c php.ini -y fpm.conf 指定 2 方法二 把配置文件挂载到 fpm 启动时不带参数的默认路径下的配置文件 ``` |
5 lvdongxiao 2021-07-14 16:29:04 +08:00 fpm 镜像的配置文件默认是 /usr/local/etc/php/php.ini 。你把这个文件复制出来,改好配置。再在 volumes 配置中映射到这个路径 |
![]() | 6 siguretto 2021-07-14 16:59:16 +08:00 php.ini 或者 php-fpm.conf 有问题吧,其实应该贴出这两个配置文件。 盲猜一个是 fpm 配置设成了 root 用户导致 |
7 awanganddong OP ``` 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: ``` 这个是和苹果的一一对应的 |
8 awanganddong OP 找到问题了。 php-fpm 镜像的配置文件,你必须全部复制一遍。这样才可以。 |