Docker varnish 以命令开始但不以 docker-compose 开始

Docker varnish start with command but not with docker-compose

我是 docker 的新手,并尝试在其中转换我的实际 Web 堆栈。 目前我使用这个配置: 清漆 -> nginx -> php-fpm -> mysql

我已经转换了 php-fpm 和 nginx,现在尝试使用 varnish。

当我使用命令 运行 我的图像时,一切都很好,但是当我将它放入 docker-compose 时,我的容器将无限期重启。

命令:

name="varnish"

cd $installDirectory/$name

docker build -t $name .
docker rm -f $(docker ps -a | grep $name | cut -d' ' -f1)

docker run -d -P --name $name \
        -p 80:80 \
        --link nginx:nginx \
        -v /home/webstack/varnish/:/etc/varnish/ \
        -t $name

我的docker-compose.yml:

php-fpm:
  restart: always
  build: ./php-fpm
  volumes:
    - "/home/webstack/www/:/var/www/"

nginx:
  restart: always
  build: ./nginx
  ports:
    - "8080:8080"
  volumes:
    - "/home/webstack/nginx/:/etc/nginx/"
    - "/home/webstack/log/:/var/log/nginx/"
    - "/home/webstack/www/:/var/www/"
  links:
    - "php-fpm:php-fpm"

varnish:
  restart: always
  build: ./varnish
  ports:
    - "80:80"
  volumes:
    - "/home/webstack/varnish/:/etc/varnish/"
  links:
    - "nginx:nginx"

我没有结果 docker logs webstack_varnish_1docker ps -a 结果显示:

688c5aace1b3        webstack_varnish    "/bin/bash"              16 seconds ago      Restarting (0) 5 seconds ago   0.0.0.0:80->80/tcp   

在这里你可以看到我的 Dockerfile:

FROM debian:jessie

# Update apt sources
RUN apt-get -qq update
RUN apt-get install -y curl apt-transport-https
RUN sh -c "curl https://repo.varnish-cache.org/GPG-key.txt | apt-key add -"
RUN echo "deb https://repo.varnish-cache.org/debian/ jessie varnish-4.1" > /etc/apt/sources.list.d/varnish-cache.list

# Update the package repository
RUN apt-get -qq update

# Install varnish
RUN apt-get install -y varnish

# Expose port 80
EXPOSE 80

请问我做错了什么?

此致。

您的清漆 Dockerfile 似乎缺少 ENTRYPOINT and/or CMD 实际启动清漆的指令。

我们在这里找到了解决方案: https://github.com/docker/compose/issues/2563

我必须将 tty: true 添加到我的 varnish 配置中。

此致。