Docker堆栈:Apache服务无法启动

时间:2018-01-19 16:53:57

标签: apache docker docker-swarm

docker stack中的Apache服务永远不会启动(或者,更准确,不断重启)。知道发生了什么事吗?

容器是:https://github.com/adrianharabula/lampstack.git

中的容器

我的docker-compose.yml是:

version: '3'

services:
   db:
     image: mysql:5.7
     volumes:
       - ../db_files:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: toor
       #MYSQL_DATABASE: testdb
       #MYSQL_USER: docky
       #MYSQL_PASSWORD: docky
     ports:
      - 3306:3306
   p71:
#     depends_on:
#       - db
     image: php:7.1
     build:
      context: .
      dockerfile: Dockerfile71
     links:
      - db
     volumes:
      - ../www:/var/www/html
      - ./php.ini:/usr/local/etc/php/conf.d/php.ini
      - ./virtualhost-php71.conf:/etc/apache2/sites-available/001-virtualhost-php71.conf
      - ../logs/71_error.log:/var/www/71_error.log
      - ../logs/71_access.log:/var/www/71_access.log
     environment:
       DB_HOST: db:3306
       DB_PASSWORD: toor
     ports:
      - "81:80"

   pma:
     depends_on:
       - db
     image: phpmyadmin/phpmyadmin

我从以下开始:

docker stack deploy -c docker-compose.yml webstack

db和pma服务正常启动,但p71服务不断重启

docker service inspect webstack_p71

表示:

    "UpdateStatus": {
        "State": "paused",
        "StartedAt": "2018-01-19T16:28:17.090936496Z",
        "CompletedAt": "1970-01-01T00:00:00Z",
        "Message": "update paused due to failure or early termination of task 45ek431ssghuq2tnfpduk1jzp"
    }

正如您在docker-composer.yml中所看到的,我已经注释掉了服务依赖项,以避免在首次运行时不满足依赖性时出现故障。

$ docker service logs -f webstack_p71

docker service logs -f webstack_p71

$ docker service ps --no-trunc webstack_p71

docker service ps --no-trunc webstack_p71

如何让Apache / PHP(p71)服务运行?

所有容器在独立运行时都能正常工作: $ docker build -f Dockerfile71 -t php71。 $ docker run -d -p 81:80 php71:latest

1 个答案:

答案 0 :(得分:2)

首先,depends_on选项在swarm mode的{​​{1}}中无效。(请参阅this issue

简而言之......

  当与docker堆栈部署一起使用时,

depends_on是一个无操作。 Swarm模式   服务在失败时重新启动,因此没有理由拖延   他们的创业。即使他们失败了几次,他们最终也会失败   回收

当然,即使version 3不起作用,depends_on也应该正常工作,因为它会在失败后重新启动。

因此,我认为运行p71服务时出现了一些错误。这就是服务不断重启的原因。但是,我不确定服务中发生了什么,只有您提供的信息。

您可以通过查看日志来检查跟踪。

p71

和错误消息

$ docker service logs -f webstack_p71