Как настроить доступ к файлу в локальной файловой системе для MySQL, запущенного в Docker-контейнере - PullRequest
0 голосов
/ 17 декабря 2018

Я устанавливаю MySQL5.6 в докер.

Я создаю docker-compose.ym и задаю свойства для db

db:
  container_name: db_mysql
  image: mysql:5.6
  command: --secure-file-priv='/var/lib/'
  environment:
    MYSQL_DATABASE: devdb
    MYSQL_ROOT_PASSWORD: ""
    MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
  ports:
    - "3306:3306"

  volumes:
     - /home/marina/some-path:/var/lib/

, но не могу использовать функцию

SELECT LOAD_FILE ('/ home / marina / some-path / some-path-more / image.jpg ').

Как настроить том для доступа к моим файлам из докера?

Need mount my local file system to docker machine
# Create the "default" machine, but then stop it.
docker-machine create --driver virtualbox default
docker-machine stop
# Add a new shared folder through virtualbox
VBoxManage sharedfolder add default --name "userhome" --hostpath 
"/home/marina/"
# Turn the machine back on, and mount the share
docker-machine start
docker-machine ssh default 'sudo mkdir --parents /home/marina'
docker-machine ssh default 'sudo mount -t vboxsf userhome /home/marina'
# Check it works
docker-machine ssh default 'ls /home/marina'
# Start it up
docker-compose up

и изменить громкость на:

volumes:
    - /home/marina/workprojectdir:/home/marina/workprojectdir

и установить команду:

command: --secure-file-priv=''

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

Попробуйте вместо этого сопоставить с / var / lib / mysql.Сопоставление / var / lib не рекомендуется.

db:
  container_name: db_mysql
  image: mysql:5.6
  command: --secure-file-priv='/var/lib/mysql'
  environment:
    MYSQL_DATABASE: devdb
    MYSQL_ROOT_PASSWORD: ""
    MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
  ports:
    - "3306:3306"

  volumes:
     - /home/marina/some-path:/var/lib/mysql
  • Скопируйте image.jpg в /home/marina/some-path на вашем хосте контейнера.Это отобразит файл в /var/lib/mysql внутри контейнера.
  • Bash в контейнер docker exec -it <container-id> bash
  • Выполнить SELECT LOAD_FILE('/var/lib/mysql/image.jpg')
0 голосов
/ 17 декабря 2018

Во-первых, я бы не использовал /var/lib в качестве пути контейнера, поскольку этот путь обычно существует, и вы можете повредить данные внутри контейнера.Используйте что-то вроде:

volumes:
  - /home/marina/some-path:/mydata

Во-вторых, я полагаю, вы путаете путь хоста и путь контейнера.В приведенном примере внутри контейнера вы должны использовать что-то вроде этого SELECT LOAD_FILE('/mydata/image.jpg')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...