Docker контейнер вышел с кодом 0 после docker-compose up -d - PullRequest
0 голосов
/ 14 сентября 2018

Я знаю, что вопрос задавался в различных ситуациях, но я все еще застрял, несмотря на все, что я читаю в Интернете.

Я хочу запустить скрипт после того, как контейнер "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: true и exec "$@", но ничего из этого не работает.

1 Ответ

0 голосов
/ 14 сентября 2018

Вы можете закончить с командой, как tail -f /dev/null

Я часто использую это непосредственно в моем docker-compose.yml с command: tail -f /dev/null. И легко увидеть, как я поддерживаю работу контейнера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...