Невозможно подключить laravel к mysql внутри контейнера докеровLinux

Ответить Пред. темаСлед. тема
Anonymous
 Невозможно подключить laravel к mysql внутри контейнера докеров

Сообщение Anonymous »

У меня есть приложение laravel 11, и оно работает нормально. Я хочу, чтобы приложение запускалось внутри Docker, и для приложения laravel у меня настроен следующий файл Docker:

Код: Выделить всё

FROM php:8.3-fpm

RUN apt-get update && apt-get install -y \
&& docker-php-ext-install pdo_mysql

WORKDIR /var/www

COPY . /var/www/

RUN curl -sS https://getcomposer.org/installer | php \
&& mv composer.phar /usr/local/bin/composer

RUN composer install

EXPOSE 8000

CMD ["php", "artisan", "serve", "--host=127.0.0.1", "--port=8000"]
а вот мой файл .env для laravel.

Код: Выделить всё

APP_NAME="News"
APP_ENV=local
APP_KEY=base64:54Cuy//nhKFvtc+ir8SY6VinO6Av+qIdMSj9R9YSm8g=
APP_DEBUG=true
APP_TIMEZONE=UTC
APP_URL=http://localhost

APP_LOCALE=en
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US

APP_MAINTENANCE_DRIVER=file
# APP_MAINTENANCE_STORE=database

BCRYPT_ROUNDS=12

LOG_CHANNEL=stack
LOG_STACK=single
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=dbnews
DB_USERNAME=dbuser
DB_PASSWORD=dbpasss

SESSION_DRIVER=database
SESSION_LIFETIME=120
SESSION_ENCRYPT=false
SESSION_PATH=/
SESSION_DOMAIN=null

SANCTUM_STATEFUL_DOMAINS=localhost,127.0.0.1

BROADCAST_CONNECTION=log
FILESYSTEM_DISK=local
QUEUE_CONNECTION=database

CACHE_STORE=database
CACHE_PREFIX=

MEMCACHED_HOST=127.0.0.1

REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_MAILER=smtp
MAIL_HOST=mail.domain.com
MAIL_PORT=465
MAIL_USERNAME=user@domain.com
MAIL_PASSWORD='&6gT5%$'
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=info@domain.com
MAIL_FROM_NAME="${APP_NAME}"

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false

VITE_APP_NAME="${APP_NAME}"
Я использую docker Compose, поэтому вот файл docker-compose.yml:

Код: Выделить всё

services:
laravel:
build:
context: ./back
volumes:
- ./back:/var/www
ports:
- "8000:8000"
depends_on:
- db

db:
image: mysql:8.0
environment:
MYSQL_DATABASE: dbnews
MYSQL_USER: dbuser
MYSQL_PASSWORD: dbpass
ports:
- "3306:3306"
volumes:
- db_data:/var/lib/mysql

nuxt:
build:
context: ./front
volumes:
- ./front:/app
ports:
- "3000:3000"
depends_on:
- laravel

volumes:
db_data:
docker Compose Up --build выдает следующий результат:

Код: Выделить всё

db_1       | 2024-09-18 13:14:45+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.39-1.el9 started.
db_1       | 2024-09-18 13:14:45+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
db_1       | 2024-09-18 13:14:45+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.39-1.el9 started.
db_1       | '/var/lib/mysql/mysql.sock' -> '/var/run/mysqld/mysqld.sock'
db_1       | 2024-09-18T13:14:45.813462Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead.
db_1       | 2024-09-18T13:14:45.815269Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.39) starting as process 1
db_1       | 2024-09-18T13:14:45.821078Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
laravel_1  |
laravel_1  |    INFO  Server running on [http://127.0.0.1:8000].
laravel_1  |
laravel_1  |   Press Ctrl+C to stop the server
laravel_1  |
db_1       | 2024-09-18T13:14:46.215960Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
db_1       | 2024-09-18T13:14:46.355592Z 0 [System] [MY-010229] [Server] Starting XA crash recovery...
nuxt_1     |
nuxt_1     | > nuxt-app@ dev /app
nuxt_1     | > nuxt dev
nuxt_1     |
db_1       | 2024-09-18T13:14:46.377436Z 0 [System] [MY-010232] [Server] XA crash recovery finished.
db_1       | 2024-09-18T13:14:46.415536Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
db_1       | 2024-09-18T13:14:46.415570Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS.  Encrypted connections are now supported for this channel.
db_1       | 2024-09-18T13:14:46.420131Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
db_1       | 2024-09-18T13:14:46.449135Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock
db_1       | 2024-09-18T13:14:46.449332Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.39'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server - GPL.
nuxt_1     | Nuxt 3.13.1
nuxt_1     |
nuxt_1     |  WARN  The CJS build of Vite's Node API is deprecated. See https://vitejs.dev/guide/troubleshooting.html#vite-cjs-node-api-deprecated for more details.
nuxt_1     |
nuxt_1     |
nuxt_1     |   ➜ Local:    http://localhost:3000/
nuxt_1     |   ➜ Network:  use --host to expose
nuxt_1     |
nuxt_1     |
nuxt_1     |  WARN  The CJS build of Vite's Node API is deprecated. See https://vitejs.dev/guide/troubleshooting.html#vite-cjs-node-api-deprecated for more details.
nuxt_1     |
nuxt_1     |   ➜ DevTools: press Shift + Alt + D in the browser (v1.4.2)
nuxt_1     |
nuxt_1     | ✔ Vite client built in 47ms
nuxt_1     | ✔ Vite server built in 1305ms
nuxt_1     | [nitro] ✔ Nuxt Nitro server built in 585 ms
nuxt_1     | ℹ Vite client warmed up in 0ms
nuxt_1     | ℹ Vite server warmed up in 2306ms

и я могу нормально получить доступ к приложению front nuxt, но вообще не могу получить доступ к localhost:8000. Когда мне удалось подключиться к приложению laravel, в браузере появилась следующая ошибка:

Код: Выделить всё

SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for mysql failed: Name or service not known (Connection: mysql, SQL: select * from sessions where id = b5JVyzFscjEITCRRj7Hud0lxhyN9hyYX4pK29hyK limit 1)
но теперь я вообще не могу подключиться, поэтому возникла новая проблема.
Если я затем снова запущу тот же Docker, команду Compose Up --build, я получу следующая ошибка:

Код: Выделить всё

ERROR: for laravel  'ContainerConfig'
Traceback (most recent call last):
File "/usr/local/bin/docker-compose", line 8, in 
sys.exit(main())
File "/usr/local/lib/python3.10/dist-packages/compose/cli/main.py", line 81, in main
command_func()
File "/usr/local/lib/python3.10/dist-packages/compose/cli/main.py", line 203, in perform_command
handler(command, command_options)
File "/usr/local/lib/python3.10/dist-packages/compose/metrics/decorator.py", line 18, in wrapper
result = fn(*args, **kwargs)
File "/usr/local/lib/python3.10/dist-packages/compose/cli/main.py", line 1186, in up
to_attach = up(False)
File "/usr/local/lib/python3.10/dist-packages/compose/cli/main.py", line 1166, in up
return self.project.up(
File "/usr/local/lib/python3.10/dist-packages/compose/project.py", line 697, in up
results, errors = parallel.parallel_execute(
File "/usr/local/lib/python3.10/dist-packages/compose/parallel.py", line 108, in parallel_execute
raise error_to_reraise
File "/usr/local/lib/python3.10/dist-packages/compose/parallel.py", line 206, in producer
result = func(obj)
File "/usr/local/lib/python3.10/dist-packages/compose/project.py", line 679, in do
return service.execute_convergence_plan(
File "/usr/local/lib/python3.10/dist-packages/compose/service.py", line 579, in execute_convergence_plan
return self._execute_convergence_recreate(
File "/usr/local/lib/python3.10/dist-packages/compose/service.py", line 499, in _execute_convergence_recreate
containers, errors = parallel_execute(
File "/usr/local/lib/python3.10/dist-packages/compose/parallel.py", line 108, in parallel_execute
raise error_to_reraise
File "/usr/local/lib/python3.10/dist-packages/compose/parallel.py", line 206, in producer
result = func(obj)
File "/usr/local/lib/python3.10/dist-packages/compose/service.py", line 494, in recreate
return self.recreate_container(
File "/usr/local/lib/python3.10/dist-packages/compose/service.py", line 612, in recreate_container
new_container = self.create_container(
File "/usr/local/lib/python3.10/dist-packages/compose/service.py", line 330, in create_container
container_options = self._get_container_create_options(
File "/usr/local/lib/python3.10/dist-packages/compose/service.py", line 921, in _get_container_create_options
container_options, override_options = self._build_container_volume_options(
File "/usr/local/lib/python3.10/dist-packages/compose/service.py", line 960, in _build_container_volume_options
binds, affinity = merge_volume_bindings(
File "/usr/local/lib/python3.10/dist-packages/compose/service.py", line 1548, in merge_volume_bindings
old_volumes, old_mounts = get_container_data_volumes(
File "/usr/local/lib/python3.10/dist-packages/compose/service.py", line 1579, in get_container_data_volumes
container.image_config['ContainerConfig'].get('Volumes') or {}
KeyError: 'ContainerConfig'
Я обновился до последней версии рабочего стола Docker, поэтому не совсем понимаю, что делать дальше. Если я удалю контейнеры и начну заново, последний набор ошибок не появится.
Кто-нибудь может мне помочь, как заставить это работать?

Подробнее здесь: https://stackoverflow.com/questions/789 ... -container
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Linux»