Я иду отсюда:
Как запустить docker-compose с хост-сетью?
я понял, что mysql_connect
использует сокеты, когда localhost
введен как хост.В результате php на моей хост-системе не может найти сокет, потому что этот сокет находится в контейнере.
, когда я использую compose-docker
, я могу прочитать эту
Версия:Сокет '5.6.44': порт /var/run/mysqld/mysqld.sock: 3306 MySQL Community Server (GPL)
так что, как мне показалось, логично сделать, это ввести на моемhost, конфигурация сокета mysql_connect в php, чтобы указывать на /var/run/mysqld/mysqld.sock
, но он находится в моем контейнере, поэтому он не может его найти.
В результате я попытался отобразить dir контейнера/var/run/mysqld
к некоторому каталогу хоста, поэтому я могу затем использовать этот каталог сокетов хоста в моем php.ini на моем хосте.
Но:
при запуске я получаю:
Невозможно запустить сервер: привязка к сокету unix: разрешение запрещено
У вас уже есть другой сервер mysqld, работающий на сокете
, поэтому сопоставьте папку сокета каким-либо образомдает проблемы чтения с записью в контейнер докера.Есть ли какое-либо решение для этого?
мой файл yml это:
version: '3.3'
services:
sciodb:
container_name: sciodb
image: mysql:5.6
restart: always
environment:
MYSQL_DATABASE: 'db'
# So you don't have to use root, but you can if you like
MYSQL_USER: 'myuser'
# You can use whatever password you like
MYSQL_PASSWORD: 'test1234'
# Password for root access
MYSQL_ROOT_PASSWORD: 'test1234'
ports:
# <Port exposed> : < MySQL Port running inside container>
- '3306:3306'
expose:
# Opens port 3306 on the container
- '3306'
# Where our data will be persisted
volumes:
- /home/myuser/nmyapp_db:/var/lib/mysql
- /media/sf_vmwareshare:/var/vmwareshare
- /home/myuser/nmyapp_socket:/var/run/mysqld