Docker не запускает скрипт после запуска контейнера. Как запустить?
Не получается наладить запуск скрипта run.sh внутри контейнера после старта контейнера. Запускаю через docker-compose. Подскажите, что я делаю не так?
Структура проекта:
apache
default.conf
php
Dockerfile
src
/*Тут Laravel*/
docker-compose.yml
.env
docker-compose.yml
version: '3.8'
services:
database:
image: postgres
container_name: database
restart: unless-stopped
environment:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
volumes:
- ./postgres-data:/var/lib/postgresql/data
ports:
- '5432:5432'
php-apache:
container_name: php-apache
build:
context: ./php
ports:
- '8080:80'
- '8000:8000'
- '6001:6001'
volumes:
- ./src:/var/www/WebSocketServer
- ./apache/default.conf:/etc/apache2/sites-enabled/000-default.conf
depends_on:
- database
Dockerfile
FROM php:8.0-apache
RUN apt update && apt install -y zlib1g-dev g++ libicu-dev zip libzip-dev zip libpq-dev \
&& docker-php-ext-install intl opcache pdo pgsql pdo_pgsql \
&& pecl install apcu \
&& docker-php-ext-enable apcu \
&& docker-php-ext-configure zip \
&& docker-php-ext-install zip
WORKDIR /var/www/WebSocketServer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
#Run script
COPY ./run.sh /tmp
RUN ["chmod", "+x", "/tmp/run.sh"]
ENTRYPOINT ["/tmp/run.sh"]
EXPOSE 8000
Собираю так:
xxx@xxx:~/docker/docker-websocket/php$ docker-compose up -d --build
Запускаемый файл run.sh
#!/bin/bash
php artisan config:cache ;
php artisan route:cache ;
php artisan serve --host=0.0.0.0 ;
php artisan websockets:serve ;
php artisan schedule:work