docker-compose up -d后,Docker容器以代码0退出

问题描述 投票:1回答:1

我知道在各种情况下已经提出了这个问题,但尽管我在互联网上阅读了所有内容,但我仍然感到困惑。

我希望在构建容器“mywebsite”之后执行脚本,并且我使用了ENTRYPOINT,我知道在正常使用中,执行ENTRYPOINT命令后,容器“mywebsite”退出。我尝试了几个技巧以避免退出,遗憾的是没有成功。

在我的DOCKERFILE我有这个:

FROM php:7.1.17-apache

[...]    

WORKDIR /var/www

COPY docker-entrypoint.sh /var/www/docker-entrypoint.sh
ENTRYPOINT ["sh", "/var/www/docker-entrypoint.sh"]

然后在我的docker-entrypoint.sh中我有这个:

#!/bin/bash
set -e

cd www
chown -R www-data:www-data sites modules themes

exec "$@"

这是我的docker-compose.yml:

version: '3.3'

services:
  mywebsite:
    build: .
    extra_hosts:
      - "mywebsite.local:127.0.0.1"
    hostname: mywebsite
    domainname: local
    ports:
      - 8088:80
    volumes:
      - ./www:/var/www/www
      - ./vendor:/var/www/vendor
      - ./scripts:/var/www/scripts
    links:
      - database:database
    restart: always
    tty: true
  database:
    image: mysql:5.5.49
    container_name: mysql-container
    ports:
      - 3307:3306
    volumes:
      - ./www/dumps/mywebsite.sql:/docker-entrypoint-initdb.d/dump.sql
    restart: always
    command: --max_allowed_packet=32505856
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: mywebsite

构建时,所有步骤都很好,一切都设置正确,但容器“mywebsite”继续退出。 (“数据库”服务正常运行)

我讨厌tty: trueexec "$@"但这些都不起作用。

docker docker-compose dockerfile
1个回答
3
投票

你可以像tail -f /dev/null这样的命令结束

我经常在我的docker-compose.yml中用command: tail -f /dev/null直接使用它。而且很容易看出我如何保持容器运行。

© www.soinside.com 2019 - 2024. All rights reserved.