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

pbo*_*foi 2 docker dockerfile docker-compose

我知道这个问题在各种情况下都会被问到,但是尽管我在互联网上阅读了所有内容,但我仍然很困惑。

我想在构建容器“ 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"]
Run Code Online (Sandbox Code Playgroud)

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

#!/bin/bash
set -e

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

exec "$@"
Run Code Online (Sandbox Code Playgroud)

这是我的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
Run Code Online (Sandbox Code Playgroud)

构建时,所有步骤都很好,并且所有设置都正确,但是容器“ mywebsite”不断退出。(“数据库”服务运行良好)

我曾有过tty: trueexec "$@"但这些都不起作用。

小智 5

您可以使用以下命令结束 tail -f /dev/null

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