alexjustesen / speedtest-tracker

Speedtest Tracker is a self-hosted internet performance tracking application that runs speedtest checks against Ookla's Speedtest service.
https://speedtest-tracker.dev/
MIT License
2.68k stars 100 forks source link

Unable to start container #614

Closed EDIflyer closed 1 year ago

EDIflyer commented 1 year ago

Describe the bug Unable to start main speedtest container

To Reproduce Steps to reproduce the behavior:

  1. Run Docker Compose as below (minor tweaks from the instructions for aarch64 architecture on Raspberry Pi 4)
version: '3.3'
services:
    speedtest-tracker:
        container_name: speedtest-tracker
        ports:
            - '8080:80'
            - '8443:443'
        environment:
            - PUID=1000
            - PGID=1000
            - DB_CONNECTION=mysql
            - DB_HOST=db
            - DB_PORT=3306
            - DB_DATABASE=speedtest_tracker
            - DB_USERNAME=speedy
            - DB_PASSWORD=password
        volumes:
            - '/home/pi/containers/speedtest:/config'
            - '/home/pi/containers/speedtest/web:/etc/ssl/web'
        image: 'ghcr.io/alexjustesen/speedtest-tracker:latest'
        restart: unless-stopped
        depends_on:
            - db
    db:
        image: jsurf/rpi-mariadb
        restart: always
        environment:
            - MYSQL_DATABASE=speedtest_tracker
            - MYSQL_USER=speedy
            - MYSQL_PASSWORD=password
            - MYSQL_RANDOM_ROOT_PASSWORD=true
        volumes:
            - '/home/pi/containers/speedtest/speedtest-db:/var/lib/mysql'
volumes:
  speedtest-db:

Expected behavior Container runs

Environment (please complete the following information):

Logs

#1 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php(579): Illuminate\\Database\\Connection->run()
#2 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Schema/Blueprint.php(110): Illuminate\\Database\\Connection->statement()
#3 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php(439): Illuminate\\Database\\Schema\\Blueprint->build()
#4 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php(285): Illuminate\\Database\\Schema\\Builder->build()
#5 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Migrations/DatabaseMigrationRepository.php(172): Illuminate\\Database\\Schema\\Builder->create()
#6 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/InstallCommand.php(54): Illuminate\\Database\\Migrations\\DatabaseMigrationRepository->createRepository()
#7 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\Database\\Console\\Migrations\\InstallCommand->handle()
#8 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#9 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\\Container\\Util::unwrapIfClosure()
#10 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(37): Illuminate\\Container\\BoundMethod::callBoundMethod()
#11 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(662): Illuminate\\Container\\BoundMethod::call()
#12 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(208): Illuminate\\Container\\Container->call()
#13 /var/www/html/vendor/symfony/console/Command/Command.php(312): Illuminate\\Console\\Command->execute()
#14 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(178): Symfony\\Component\\Console\\Command\\Command->run()
#15 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Concerns/CallsCommands.php(68): Illuminate\\Console\\Command->run()
#16 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Concerns/CallsCommands.php(40): Illuminate\\Console\\Command->runCommand()
#17 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php(119): Illuminate\\Console\\Command->callSilent()
#18 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/View/Components/Task.php(37): Illuminate\\Database\\Console\\Migrations\\MigrateCommand->Illuminate\\Database\\Console\\Migrations\\{closure}()
#19 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/View/Components/Factory.php(58): Illuminate\\Console\\View\\Components\\Task->render()
#20 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php(121): Illuminate\\Console\\View\\Components\\Factory->__call()
#21 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php(82): Illuminate\\Database\\Console\\Migrations\\MigrateCommand->prepareDatabase()
#22 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(633): Illuminate\\Database\\Console\\Migrations\\MigrateCommand->Illuminate\\Database\\Console\\Migrations\\{closure}()
#23 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php(102): Illuminate\\Database\\Migrations\\Migrator->usingConnection()
#24 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\Database\\Console\\Migrations\\MigrateCommand->handle()
#25 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#26 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\\Container\\Util::unwrapIfClosure()
#27 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(37): Illuminate\\Container\\BoundMethod::callBoundMethod()
#28 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(662): Illuminate\\Container\\BoundMethod::call()
#29 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(208): Illuminate\\Container\\Container->call()
#30 /var/www/html/vendor/symfony/console/Command/Command.php(312): Illuminate\\Console\\Command->execute()
#31 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(178): Symfony\\Component\\Console\\Command\\Command->run()
#32 /var/www/html/vendor/symfony/console/Application.php(1040): Illuminate\\Console\\Command->run()
#33 /var/www/html/vendor/symfony/console/Application.php(314): Symfony\\Component\\Console\\Application->doRunCommand()
#34 /var/www/html/vendor/symfony/console/Application.php(168): Symfony\\Component\\Console\\Application->doRun()
#35 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(200): Symfony\\Component\\Console\\Application->run()
#36 /var/www/html/artisan(37): Illuminate\\Foundation\\Console\\Kernel->handle()
#37 {main}
[previous exception] [object] (PDOException(code: HY000): SQLSTATE[HY000]: General error: 1005 Can't create table `speedtest_tracker`.`migrations` (errno: 13 \"Permission denied\") at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:578)

[stacktrace]
#0 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php(578): PDOStatement->execute()
#1 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php(786): Illuminate\\Database\\Connection->Illuminate\\Database\\{closure}()
#2 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php(753): Illuminate\\Database\\Connection->runQueryCallback()
#3 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php(579): Illuminate\\Database\\Connection->run()
#4 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Schema/Blueprint.php(110): Illuminate\\Database\\Connection->statement()
#5 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php(439): Illuminate\\Database\\Schema\\Blueprint->build()
#6 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php(285): Illuminate\\Database\\Schema\\Builder->build()
#7 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Migrations/DatabaseMigrationRepository.php(172): Illuminate\\Database\\Schema\\Builder->create()
#8 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/InstallCommand.php(54): Illuminate\\Database\\Migrations\\DatabaseMigrationRepository->createRepository()
#9 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\Database\\Console\\Migrations\\InstallCommand->handle()
#10 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#11 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\\Container\\Util::unwrapIfClosure()
#12 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(37): Illuminate\\Container\\BoundMethod::callBoundMethod()
#13 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(662): Illuminate\\Container\\BoundMethod::call()
#14 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(208): Illuminate\\Container\\Container->call()
#15 /var/www/html/vendor/symfony/console/Command/Command.php(312): Illuminate\\Console\\Command->execute()
#16 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(178): Symfony\\Component\\Console\\Command\\Command->run()
#17 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Concerns/CallsCommands.php(68): Illuminate\\Console\\Command->run()
#18 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Concerns/CallsCommands.php(40): Illuminate\\Console\\Command->runCommand()
#19 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php(119): Illuminate\\Console\\Command->callSilent()
#20 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/View/Components/Task.php(37): Illuminate\\Database\\Console\\Migrations\\MigrateCommand->Illuminate\\Database\\Console\\Migrations\\{closure}()
#21 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/View/Components/Factory.php(58): Illuminate\\Console\\View\\Components\\Task->render()
#22 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php(121): Illuminate\\Console\\View\\Components\\Factory->__call()
#23 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php(82): Illuminate\\Database\\Console\\Migrations\\MigrateCommand->prepareDatabase()
#24 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(633): Illuminate\\Database\\Console\\Migrations\\MigrateCommand->Illuminate\\Database\\Console\\Migrations\\{closure}()
#25 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php(102): Illuminate\\Database\\Migrations\\Migrator->usingConnection()
#26 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\Database\\Console\\Migrations\\MigrateCommand->handle()
#27 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#28 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\\Container\\Util::unwrapIfClosure()
#29 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(37): Illuminate\\Container\\BoundMethod::callBoundMethod()
#30 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(662): Illuminate\\Container\\BoundMethod::call()
#31 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(208): Illuminate\\Container\\Container->call()
#32 /var/www/html/vendor/symfony/console/Command/Command.php(312): Illuminate\\Console\\Command->execute()
#33 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(178): Symfony\\Component\\Console\\Command\\Command->run()
#34 /var/www/html/vendor/symfony/console/Application.php(1040): Illuminate\\Console\\Command->run()
#35 /var/www/html/vendor/symfony/console/Application.php(314): Symfony\\Component\\Console\\Application->doRunCommand()
#36 /var/www/html/vendor/symfony/console/Application.php(168): Symfony\\Component\\Console\\Application->doRun()
#37 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(200): Symfony\\Component\\Console\\Application->run()
#38 /var/www/html/artisan(37): Illuminate\\Foundation\\Console\\Kernel->handle()
#39 {main}
"} 
In Connection.php line 793:

  SQLSTATE[HY000]: General error: 1005 Can't create table `speedtest_tracker`  
  .`migrations` (errno: 13 "Permission denied") (Connection: mysql, SQL: crea  
  te table `migrations` (`id` int unsigned not null auto_increment primary ke  
  y, `migration` varchar(255) not null, `batch` int not null) default charact  
  er set utf8mb4 collate 'utf8mb4_unicode_ci')                                 

In Connection.php line 578:

  SQLSTATE[HY000]: General error: 1005 Can't create table `speedtest_tracker`  
  .`migrations` (errno: 13 "Permission denied")                                

s6-rc: warning: unable to start service laravel-automations: command exited 1
/run/s6/basedir/scripts/rc.init: warning: s6-rc failed to properly bring all the services up! Check your logs (in /run/uncaught-logs/current if you have in-container logging) for more information.
prog: fatal: stopping the container. 

Additional context DB container logs appear to show it's up and running OK

Initializing database
PLEASE REMEMBER TO SET A PASSWORD FOR THE MariaDB root USER !
To do so, start the server, then issue the following commands:
'/usr/bin/mysqladmin' -u root password 'new-password'
'/usr/bin/mysqladmin' -u root -h  password 'new-password'
Alternatively you can run:
'/usr/bin/mysql_secure_installation'
which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.
See the MariaDB Knowledgebase at http://mariadb.com/kb or the
MySQL manual for more instructions.
Please report any problems at http://mariadb.org/jira
The latest information about MariaDB is available at http://mariadb.org/.
You can find additional information about the MySQL part at:
http://dev.mysql.com
Consider joining MariaDB's strong and vibrant community:
https://mariadb.org/get-involved/
Database initialized
2023-05-24 23:05:16 0 [Note] mysqld (mysqld 10.3.27-MariaDB-0+deb10u1) starting as process 95 ...
MySQL init process in progress...
2023-05-24 23:05:16 0 [Note] InnoDB: Using Linux native AIO
2023-05-24 23:05:16 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2023-05-24 23:05:16 0 [Note] InnoDB: Uses event mutexes
2023-05-24 23:05:16 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2023-05-24 23:05:16 0 [Note] InnoDB: Number of pools: 1
2023-05-24 23:05:16 0 [Note] InnoDB: Using generic crc32 instructions
2023-05-24 23:05:16 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
2023-05-24 23:05:16 0 [Note] InnoDB: Completed initialization of buffer pool
2023-05-24 23:05:16 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
2023-05-24 23:05:17 0 [Note] InnoDB: 128 out of 128 rollback segments are active.
2023-05-24 23:05:17 0 [Note] InnoDB: Creating shared tablespace for temporary tables
2023-05-24 23:05:17 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
2023-05-24 23:05:17 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
2023-05-24 23:05:17 0 [Note] InnoDB: 10.3.27 started; log sequence number 1625443; transaction id 20
2023-05-24 23:05:17 0 [Note] Plugin 'FEEDBACK' is disabled.
2023-05-24 23:05:17 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
2023-05-24 23:05:17 0 [Note] InnoDB: Buffer pool(s) load completed at 230524 23:05:17
2023-05-24 23:05:17 0 [Warning] 'user' entry 'root@d5fad395fe96' ignored in --skip-name-resolve mode.
2023-05-24 23:05:17 0 [Warning] 'user' entry '@d5fad395fe96' ignored in --skip-name-resolve mode.
2023-05-24 23:05:17 0 [Warning] 'proxies_priv' entry '@% root@d5fad395fe96' ignored in --skip-name-resolve mode.
2023-05-24 23:05:17 0 [Note] Reading of all Master_info entries succeeded
2023-05-24 23:05:17 0 [Note] Added new Master_info '' to hash table
2023-05-24 23:05:17 0 [Note] mysqld: ready for connections.
Version: '10.3.27-MariaDB-0+deb10u1'  socket: '/run/mysqld/mysqld.sock'  port: 0  Raspbian 10
Warning: Unable to load '/usr/share/zoneinfo/leap-seconds.list' as time zone. Skipping it.
GENERATED ROOT PASSWORD: tae5Phaish6chieruaz4ahkooph8Xae7
2023-05-24 23:05:23 10 [Warning] 'proxies_priv' entry '@% root@d5fad395fe96' ignored in --skip-name-resolve mode.
2023-05-24 23:05:23 14 [Warning] 'proxies_priv' entry '@% root@d5fad395fe96' ignored in --skip-name-resolve mode.
2023-05-24 23:05:23 0 [Note] mysqld (initiated by: unknown): Normal shutdown
2023-05-24 23:05:23 0 [Note] Event Scheduler: Purging the queue. 0 events
2023-05-24 23:05:23 0 [Note] InnoDB: FTS optimize thread exiting.
2023-05-24 23:05:23 0 [Note] InnoDB: Starting shutdown...
2023-05-24 23:05:23 0 [Note] InnoDB: Dumping buffer pool(s) to /var/lib/mysql/ib_buffer_pool
2023-05-24 23:05:23 0 [Note] InnoDB: Buffer pool(s) dump completed at 230524 23:05:23
2023-05-24 23:05:25 0 [Note] InnoDB: Shutdown completed; log sequence number 1625452; transaction id 23
2023-05-24 23:05:25 0 [Note] InnoDB: Removed temporary tablespace data file: "ibtmp1"
2023-05-24 23:05:25 0 [Note] mysqld: Shutdown complete
MySQL init process done. Ready for start up.
2023-05-24 23:05:25 0 [Note] mysqld (mysqld 10.3.27-MariaDB-0+deb10u1) starting as process 1 ...
2023-05-24 23:05:25 0 [Note] InnoDB: Using Linux native AIO
2023-05-24 23:05:25 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2023-05-24 23:05:25 0 [Note] InnoDB: Uses event mutexes
2023-05-24 23:05:25 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2023-05-24 23:05:25 0 [Note] InnoDB: Number of pools: 1
2023-05-24 23:05:25 0 [Note] InnoDB: Using generic crc32 instructions
2023-05-24 23:05:25 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
2023-05-24 23:05:25 0 [Note] InnoDB: Completed initialization of buffer pool
2023-05-24 23:05:25 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
2023-05-24 23:05:25 0 [Note] InnoDB: 128 out of 128 rollback segments are active.
2023-05-24 23:05:25 0 [Note] InnoDB: Creating shared tablespace for temporary tables
2023-05-24 23:05:25 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
2023-05-24 23:05:25 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
2023-05-24 23:05:25 0 [Note] InnoDB: 10.3.27 started; log sequence number 1625452; transaction id 20
2023-05-24 23:05:25 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
2023-05-24 23:05:25 0 [Note] Plugin 'FEEDBACK' is disabled.
2023-05-24 23:05:25 0 [Note] InnoDB: Buffer pool(s) load completed at 230524 23:05:25
2023-05-24 23:05:25 0 [Note] Server socket created on IP: '::'.
2023-05-24 23:05:25 0 [Warning] 'proxies_priv' entry '@% root@d5fad395fe96' ignored in --skip-name-resolve mode.
2023-05-24 23:05:25 0 [Note] Reading of all Master_info entries succeeded
2023-05-24 23:05:25 0 [Note] Added new Master_info '' to hash table
2023-05-24 23:05:25 0 [Note] mysqld: ready for connections.
Version: '10.3.27-MariaDB-0+deb10u1'  socket: '/run/mysqld/mysqld.sock'  port: 3306  Raspbian 10
EDIflyer commented 1 year ago

Hmm OK so I restarted both containers again and this time it seemed to work - not sure why!