Я знаю, что вопрос задавался в различных ситуациях, но я все еще застрял, несмотря на все, что я читаю в Интернете.
Я хочу запустить скрипт после того, как контейнер "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 "$@"
, но ничего из этого не работает.