Добрый день
делаю приложение в докере 3 контейнера в одном RabbitMQ в других Laravel
Dockerfile
FROM php:8.2
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng-dev \
zlib1g-dev \
libxml2-dev \
libzip-dev \
libonig-dev \
graphviz \
&& docker-php-ext-configure gd \
&& docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-install pdo_mysql \
&& docker-php-ext-install mysqli \
&& docker-php-ext-install zip \
&& docker-php-ext-install sockets \
&& docker-php-source delete \
&& curl -sS https://getcomposer.org/installer | php -- \
--install-dir=/usr/local/bin --filename=composer
WORKDIR /app
COPY . .
RUN composer install
docker-compose.yml
version: '3.8'
services:
main:
build:
context: .
dockerfile: Dockerfile
command: 'php artisan serve --host=0.0.0.0'
ports:
- 8001:8000
depends_on:
- main_db
volumes:
- ./:/app
networks:
- mm-network
main_queue:
build:
context: .
dockerfile: Dockerfile
command: 'php artisan queue:work'
depends_on:
- main_db
networks:
- mm-network
main_db:
image: mysql:5.7.22
environment:
MYSQL_DATABASE: main
MYSQL_USER: root
MYSQL_PASSWORD: root
MYSQL_ROOT_PASSWORD: root
volumes:
- ./storage/dbdata:/var/lib/mysql
ports:
- 33071:3306
networks:
- mm-network
networks:
mm-network:
external: true
.env
DB_CONNECTION=mysql
DB_HOST=main_db
DB_PORT=3306
DB_DATABASE=main
DB_USERNAME=root
DB_PASSWORD=root
Сервис main_queue: нужен чтобы команда php artisan queue:work запускалась при создании контейнера, но при запуске этот сервис не запускается и выдает ошибку
main_queue-1 |
main_queue-1 | Illuminate\Database\QueryException
main_queue-1 |
main_queue-1 | SQLSTATE[HY000] [2002] Connection refused (Connection: mysql, SQL: select * from `cache` where `key` in (illuminate:queue:restart))
main_queue-1 |
main_queue-1 | at vendor/laravel/framework/src/Illuminate/Database/Connection.php:813
main_queue-1 | 809▕ $this->getName(), $query, $this->prepareBindings($bindings), $e
main_queue-1 | 810▕ );
main_queue-1 | 811▕ }
main_queue-1 | 812▕
main_queue-1 | ➜ 813▕ throw new QueryException(
main_queue-1 | 814▕ $this->getName(), $query, $this->prepareBindings($bindings), $e
main_queue-1 | 815▕ );
main_queue-1 | 816▕ }
main_queue-1 | 817▕ }
main_queue-1 |
main_queue-1 | +40 vendor frames
main_queue-1 |
main_queue-1 | 41 artisan:13
main_queue-1 | Illuminate\Foundation\Application::handleCommand(Object(Symfony\Component\Console\Input\ArgvInput))
main_queue-1 |
main_queue-1 exited with code 1
Пишут в гугле, что нужно в .env файле DB_HOST указать название сервиса базы данных, main_db в моем случае - так оно и указано
При этом если запустить этот сервис повторно, когда уже запущены другие сервисы, то он запускается норм
Подскажите пожалкйста, как сделать, чтобы сервис запускался при первоначальном запуске?