два стула контейнера. В одном база mysql, во втором скрипт, который делает бекап через msqldump.
Если запустить скрипт на хосте, то бекап успешно создается. Если скрипт помещается в контейнер, то имеем ошибку
mysqldump: Got error: 2002: "Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (2)" when trying to connect.
Как побороть эту напасть? Явно скрипту в контейнере не хватает каких-то прав, но как их дать я не понимаю((
Очевидно пробросить сокет в контейнер
что то мешает подключиться по сети к базе?
та ничего не должно. контейнеры в одном энвайрментею вроде как
А локально он как у тебя отрабатывает? К чему скрипт подключается? Может у тебя локально есть СУБД установленная?
на хосте есть только консольные утилиты. таблицы лежат в контейнере №1 - они успешно бекапятся скриптом с хоста. в dockerfile контейнерa №2 я добавляю RUN apt-get update && apt install -y mariadb-client т.е., если я правильно понимаю, mysqldump должен выполняться без проблем
докер композ файл покажи
version: '3.9' networks: mysql_net: services: db: image: mysql:5.7 command: --default-authentication-plugin=mysql_native_password volumes: - db_data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: 123 MYSQL_DATABASE: test MYSQL_USER: user MYSQL_PASSWORD: 123 ports: - 3306:3306 networks: - mysql_net change_db: build: context: ./tick dockerfile: Dockerfile ports: - 8000:8000 networks: - mysql_net backup_db: volumes: - db_data:/var/lib/mysql build: context: ./backup dockerfile: Dockerfile ports: - 8001:8001 networks: - mysql_net volumes: db_data: {}
network надо описать глобально и 3306 по идее локально должен быть на хосте доступен, локально мускуля ведь нет? лучше не пробрасывать на хост, достаточно внутри сети иметь доступ, обращаться можно по хосту db а зачем backup_db сервис ? он же ничего не делает и чему там собираться в билде?
как раз на backup_db должен выполняться скрипт, для бекапа. а насчет глобального описания можно подробнее?
networks: mysql_net: driver: bridge
а вижу, оно в начале
зайди в консоль контейнера бекап дб и пингани db
не могу, т.к. этот контейнер не может стартануть с этой ошибкой Enter password: mysqldump: Got error: 2002: "Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (2)" when trying to connect
Обсуждают сегодня