apache - docker 堆栈 : Apache service will not start

标签 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 服务日志 -f webstack_p71

docker service logs -f webstack_p71

$ docker 服务 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

最佳答案

首先,depends_on 选项在 version 3swarm mode 中不起作用。(引用 this issue )

简而言之...

depends_on is a no-op when used with docker stack deploy. Swarm mode services are restarted when they fail, so there's no reason to delay their startup. Even if they fail a few times, they will eventually recover.

当然,即使 depends_on 不工作,p71 应该可以正常工作,因为它会在失败后重新启动。

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

可以通过查看日志来查看trace。

$ docker service logs -f webstack_p71

和错误信息

$ docker service ps --no-trunc webstack_p71   # check ERROR column

关于apache - docker 堆栈 : Apache service will not start,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48345923/

相关文章:

git - 克隆 git 存储库时出错,返回错误代码 501

postgresql - 如何使用 docker-compose 连接到 PostgreSQL?

Azure 开发运营 : Compose Error: The current Compose file version is not compatible with your engine version

git - 使用GitVersion生成Docker镜像标签

docker - 如何比较Istio和Docker Swarm?

docker - 在docker中创建网络是什么意思?

mysql - Ruby on Rails 与 Xampp

apache - .htaccess:提供静态文件,将其他所有内容路由到 index.php

docker - docker swarm中的容器无法解析外部地址的dns

java - Apache Felix OSGi Framework 中的自动更新包