#mysql #docker #invoice-ninja
Вопрос:
Я надеюсь, что кто — нибудь сможет помочь мне с настройкой Invoice Ninja в первый раз. Я пытаюсь запустить Invoice Ninja с помощью Docker Compose, но, похоже, у меня проблема с подключением к MySQL:
SQLSTATE[HY000] [2002] No such file or directory
Экземпляр MySQL размещен удаленно и в настоящее время содержит различные базы данных, доступные хосту Docker и контейнерам.
Использование DBeaver с моей локальной машины:
- Я могу подключиться к базе данных Invoice Ninja напрямую через DBeaver и использовал опцию предоставления при создании пользователя и базы данных MySQL.
- Я могу создать таблицу как пользователь и выполнить выбор с помощью DBeaver .
- Я могу подключиться к удаленной базе данных MySQL из контейнера.
…тем не менее, я все еще получаю эти ошибки MySQL.
Команда выбора из DBeaver:
SHOW TABLES
Tables_in_ninja
NewTable
Соединение из контейнера с MySQL:
~ $ mysql -h 13.13.13.13 -u ninja -pninja123 ninja
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MariaDB monitor. Commands end with ; or g.
Your MySQL connection id is 1235069
Server version: 8.0.21 Source distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
MySQL [ninja]> SHOW TABLES;
-----------------
| Tables_in_ninja |
-----------------
| NewTable |
-----------------
1 row in set (0.003 sec)
MySQL [ninja]>
Команда SQL для создания пользователя и базы данных:
CREATE USER 'ninja'@'%' IDENTIFIED BY 'ninja123';
CREATE DATABASE IF NOT EXISTS ninja CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL PRIVILEGES on ninja.* to 'ninja'@'%' WITH GRANT OPTION;
FLUSH privileges;
I use the following compose example:
version: '2'
services:
invoiceninja-app:
container_name: invoiceninja-app
image: "invoiceninja/invoiceninja"
ports:
- "61000:9000"
hostname: "invoiceninja-app"
environment:
- IS_DOCKER=true
- APP_ENV=production
- APP_DEBUG=1
- APP_URL=http://in-01.domain.com:61000
- APP_KEY=base64:BZ5GN2QUAkiYEXAMPLEN9pq55jctXfAKX4=
- APP_CIPHER=AES-256-CBC
- DB_TYPE=mysql
- DB_STRICT=false
- DB_HOST=mysql-67.myhost.com
- DB_DATABASE=ninja
- DB_USERNAME=ninja
- DB_PASSWORD=ninja123
restart: "always"
volumes:
- /mnt/containers/invoiceninja-app-public/:/var/app/public/
- /mnt/containers/invoiceninja-app-store/:/var/app/storage/
networks:
invoiceninja:
ipv4_address: "172.37.0.4"
logging:
driver: "json-file"
options:
max-file: "1"
max-size: "1m"
networks:
invoiceninja:
ipam:
config:
- subnet: "172.37.0.0/16"
Additional Debug Info:
Connections Inside Container
user@ip-200-262-81-70:~$ sudo docker exec -it invoiceninja-app /bin/sh
~ $ netstat -tlpn
netstat: showing only processes with your user ID
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.11:36559 0.0.0.0:* LISTEN -
tcp 0 0 :::9000 :::* LISTEN 78/php-fpm.conf)
Docker Host Networks
user@ip-200-262-81-70:~$ sudo docker network ls
NETWORK ID NAME DRIVER SCOPE
5def5exc1fd2 invoiceninja_default bridge local
7433aurdc010 invoiceninja_invoiceninja bridge local
MySQL User Auth
SELECT user,authentication_string,plugin,host FROM mysql.user WHERE user="ninja";
------------------ ------------------------------------------- ----------------------- -----------
| user | authentication_string | plugin | host |
------------------ ------------------------------------------- ----------------------- -----------
| ninja | ssssssss | mysql_native_password | % |
Environment Vars In Container
~ $ env
SNAPPDF_EXECUTABLE_PATH=/usr/bin/chromium-browser
DB_TYPE=mysql
PHP_EXTRA_CONFIGURE_ARGS=--enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --disable-cgi
APP_DEBUG=1
HOSTNAME=invoiceninja-app
APP_URL=http://in-01.domain.com:61000
PHP_INI_DIR=/usr/local/etc/php
SHLVL=1
HOME=/var/www/app
APP_CIPHER=AES-256-CBC
DB_DATABASE=ninja
PHP_LDFLAGS=-Wl,-O1 -pie
PHP_CFLAGS=-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
PHP_VERSION=7.4.15
DB_USERNAME=ninja
GPG_KEYS=42670A7FE4D04C074A4EF02D 5A528B46F53EA312
PHP_CPPFLAGS=-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
PHP_ASC_URL=https://www.php.net/distributions/php-7.4.15.tar.xz.asc
INVOICENINJA_VERSION=5.1.13
BAK_PUBLIC_PATH=/var/www/app/docker-backup-public/
PHP_URL=https://www.php.net/distributions/php-7.4.15.tar.xz
TERM=xterm
INVOICENINJA_USER=invoiceninja
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
BAK_STORAGE_PATH=/var/www/app/docker-backup-storage/
IS_DOCKER=true
APP_ENV=production
APP_KEY=base64:BZ5GNEXAMPLEjctXfAKX4=
DB_PASSWORD=ninja123
PHPIZE_DEPS=autoconf dpkg-dev dpkg file g gcc libc-dev make pkgconf re2c
PWD=/var/www/app
PHP_SHA256=9b859c65f0cf7b3efb3c20d874a79b5ec44d43cb8
DB_STRICT=false
DB_HOST=mysql-67.myhost.com
LOG=errorlog
Docker Container Log
Configuration cache cleared!
Configuration cached successfully!
Configuration cache cleared!
Configuration cached successfully!
Route cache cleared!
Routes cached successfully!
les cached successfully!
In Connection.php line 678:
SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from inform
ation_schema.tables where table_schema = ninja and table_name = accounts an
d table_type = 'BASE TABLE')
In Exception.php line 18:
SQLSTATE[HY000] [2002] No such file or directory
In PDOConnection.php line 38:
SQLSTATE[HY000] [2002] No such file or directory
[02-Mar-2021 09:21:58] NOTICE: [pool www] 'user' directive is ignored when FPM is not running as root
[02-Mar-2021 09:21:58] NOTICE: [pool www] 'user' directive is ignored when FPM is not running as root
[02-Mar-2021 09:21:58] NOTICE: [pool www] 'group' directive is ignored when FPM is not running as root
[02-Mar-2021 09:21:58] NOTICE: [pool www] 'group' directive is ignored when FPM is not running as root
[02-Mar-2021 09:21:58] NOTICE: fpm is running, pid 79
[02-Mar-2021 09:21:58] NOTICE: ready to handle connections
In Connection.php line 678:
SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from inform
ation_schema.tables where table_schema = ninja and table_name = accounts an
d table_type = 'BASE TABLE')
In Exception.php line 18:
SQLSTATE[HY000] [2002] No such file or directory