Docker-docker-compose:php-fpm可通过映像运行,但不适用于Dockerfile中的构建

时间:2018-08-02 21:30:02

标签: php docker docker-compose dockerfile

我有以下docker-compose。

version: "2"
services:
  nginx:
      image: nginx:latest
      restart: always
      ports:
          - "8026:80"
      volumes:
          - ./web:/var/www/html
          - ./nginx.conf:/etc/nginx/conf.d/default.conf
      links:
          - fpm
  fpm:
      image: php:7.2-fpm
      #build: php-fpm/.
      restart: always
      volumes:
          - ./web:/var/www/html
          - ./php-fpm/msmtprc:/etc/msmtprc
      expose:
          - "9000"

它工作正常,打开相关的URL时可以看到我的页面。

但发表评论后

  image: php:7.2-fpm

并取消注释

  build: php-fpm/.

并在php-fpm /中使用这样的Dockerfile,我在nginx中得到502错误,并且在日志中出现了这样的错误:

  

nginx_1 | 2018/08/02 21:19:43 [错误] 6#6:* 5连接到上游时connect()失败(111:连接被拒绝),客户端:192.168.176.1,服务器:,请求:“ GET / report / post.php HTTP / 1.0”,上游:“ fastcgi://192.168.176.2:9000”,主机:“ api.mytestdomain.com”

     

从php:7.2-fpm

     

运行apt-get更新&& apt-get -y安装msmtp mutt      RUN echo'sendmail_path =“ / usr / bin / msmtp -t”'>> /usr/local/etc/php/conf.d/mail.ini

     

运行apt-get更新&& apt-get -y安装cron

     

#在cron目录中添加crontab文件      添加crontab /etc/cron.d/hello-cron

     

#赋予cron作业执行权      运行chmod 0644 /etc/cron.d/hello-cron

     

#应用cron作业      运行crontab /etc/cron.d/hello-cron

     

#创建能够运行tail的日志文件      运行touch /var/log/cron.log

     

#在容器启动时运行命令      CMD [“ cron”,“ -f”]

为什么php-fpm停止工作?

P.S。 我还看到以下区别:

使用image时,我得到

  

fpm_1 | [02-Aug-2018 21:47:50]注意:fpm正在运行,pid 1   fpm_1 | [02-Aug-2018 21:47:50]注意:准备处理连接

在docker-compose up期间。

如果我使用的是Dockerfile,似乎fpm甚至无法启动

P.P.S。

看起来像问题出在CMD ["cron", "-f"]行中。有人有变通办法让cronfpm在同一个容器中运行吗?

1 个答案:

答案 0 :(得分:0)

检查容器的日志,这是发生的,因为正如您所说的fpm无法启动,例如,在构建初始php:7.2-fpm容器后,它可能是任何错误,例如,无法安装cron