Skip to content

Commit bff6494

Browse files
committed
Config: Make PhotoPrism compatible with MariaDB 11 #3443
Signed-off-by: Michael Mayer <michael@photoprism.app>
1 parent ef49ebe commit bff6494

17 files changed

+49
-24
lines changed

docker-compose.ci.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ services:
150150
security_opt: # see https://github.com/MariaDB/mariadb-docker/issues/434#issuecomment-1136151239
151151
- seccomp:unconfined
152152
- apparmor:unconfined
153-
command: mysqld --port=4001 --innodb-buffer-pool-size=256M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
153+
command: mariadbd --port=4001 --innodb-buffer-pool-size=256M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
154154
expose:
155155
- "4001" # database port (internal)
156156
volumes:

docker-compose.mariadb.yml

+24-1
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,37 @@ version: '3.5'
44
## Setup: https://docs.photoprism.app/developer-guide/setup/ ##
55

66
services:
7+
## MariaDB 11.0 Database Server
8+
## Docs: https://mariadb.com/docs/reference/
9+
## Release Notes: https://mariadb.com/kb/en/mariadb-11-0-0-release-notes/
10+
mariadb-11-0:
11+
image: mariadb:11.0-rc
12+
security_opt: # see https://github.com/MariaDB/mariadb-docker/issues/434#issuecomment-1136151239
13+
- seccomp:unconfined
14+
- apparmor:unconfined
15+
command: mariadbd --port=4001 --innodb-strict-mode=1 --innodb-buffer-pool-size=256M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
16+
expose:
17+
- "4001"
18+
ports:
19+
- "4003:4001" # database port (host:container)
20+
volumes:
21+
- "./scripts/sql/mariadb-init.sql:/docker-entrypoint-initdb.d/init.sql"
22+
environment:
23+
MARIADB_AUTO_UPGRADE: "1"
24+
MARIADB_INITDB_SKIP_TZINFO: "1"
25+
MARIADB_DATABASE: "photoprism"
26+
MARIADB_USER: "photoprism"
27+
MARIADB_PASSWORD: "photoprism"
28+
MARIADB_ROOT_PASSWORD: "photoprism"
29+
730
## MariaDB 10.8 Database Server
831
## Docs: https://mariadb.com/kb/en/release-notes-mariadb-108-series/
932
mariadb-10-8:
1033
image: mariadb:10.8
1134
security_opt: # see https://github.com/MariaDB/mariadb-docker/issues/434#issuecomment-1136151239
1235
- seccomp:unconfined
1336
- apparmor:unconfined
14-
command: mysqld --port=4001 --innodb-buffer-pool-size=256M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
37+
command: mariadbd --port=4001 --innodb-buffer-pool-size=256M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
1538
expose:
1639
- "4001"
1740
ports:

docker-compose.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ services:
133133
security_opt: # see https://github.com/MariaDB/mariadb-docker/issues/434#issuecomment-1136151239
134134
- seccomp:unconfined
135135
- apparmor:unconfined
136-
command: mysqld --port=4001 --innodb-strict-mode=1 --innodb-buffer-pool-size=256M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
136+
command: mariadbd --port=4001 --innodb-strict-mode=1 --innodb-buffer-pool-size=256M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
137137
expose:
138138
- "4001"
139139
ports:

internal/commands/backup.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ func backupAction(ctx *cli.Context) error {
121121
switch conf.DatabaseDriver() {
122122
case config.MySQL, config.MariaDB:
123123
cmd = exec.Command(
124-
conf.MysqldumpBin(),
124+
conf.MariadbDumpBin(),
125125
"--protocol", "tcp",
126126
"-h", conf.DatabaseHost(),
127127
"-P", conf.DatabasePortString(),

internal/commands/restore.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ func restoreAction(ctx *cli.Context) error {
129129
switch conf.DatabaseDriver() {
130130
case config.MySQL, config.MariaDB:
131131
cmd = exec.Command(
132-
conf.MysqlBin(),
132+
conf.MariadbBin(),
133133
"--protocol", "tcp",
134134
"-h", conf.DatabaseHost(),
135135
"-P", conf.DatabasePortString(),

internal/config/config_filepaths.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -591,14 +591,14 @@ func (c *Config) TestdataPath() string {
591591
return filepath.Join(c.StoragePath(), "testdata")
592592
}
593593

594-
// MysqlBin returns the mysql executable file name.
595-
func (c *Config) MysqlBin() string {
596-
return findBin("", "mysql")
594+
// MariadbBin returns the mariadb executable file name.
595+
func (c *Config) MariadbBin() string {
596+
return findBin("", "mariadb")
597597
}
598598

599-
// MysqldumpBin returns the mysqldump executable file name.
600-
func (c *Config) MysqldumpBin() string {
601-
return findBin("", "mysqldump")
599+
// MariadbDumpBin returns the mariadb-dump executable file name.
600+
func (c *Config) MariadbDumpBin() string {
601+
return findBin("", "mariadb-dump")
602602
}
603603

604604
// SqliteBin returns the sqlite executable file name.

internal/config/config_filepaths_test.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -417,14 +417,14 @@ func TestConfig_AssetsPath2(t *testing.T) {
417417
}
418418
}
419419

420-
func TestConfig_MysqlBin(t *testing.T) {
420+
func TestConfig_MariadbBin(t *testing.T) {
421421
c := NewConfig(CliTestContext())
422-
assert.Contains(t, c.MysqlBin(), "mysql")
422+
assert.Contains(t, c.MariadbBin(), "mariadb")
423423
}
424424

425-
func TestConfig_MysqldumpBin(t *testing.T) {
425+
func TestConfig_MariadbDumpBin(t *testing.T) {
426426
c := NewConfig(CliTestContext())
427-
assert.Contains(t, c.MysqldumpBin(), "mysqldump")
427+
assert.Contains(t, c.MariadbDumpBin(), "mariadb-dump")
428428
}
429429

430430
func TestConfig_SqliteBin(t *testing.T) {

internal/config/report.go

+2
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,8 @@ func (c *Config) Report() (rows [][]string, cols []string) {
175175
{"database-password", strings.Repeat("*", utf8.RuneCountInString(c.DatabasePassword()))},
176176
{"database-conns", fmt.Sprintf("%d", c.DatabaseConns())},
177177
{"database-conns-idle", fmt.Sprintf("%d", c.DatabaseConnsIdle())},
178+
{"mariadb-bin", c.MariadbBin()},
179+
{"mariadb-dump-bin", c.MariadbDumpBin()},
178180

179181
// File Converters.
180182
{"sips-bin", c.SipsBin()},

internal/entity/schema/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
## MariaDB SQL Dump
1616

17-
The following dump was created by running `mysqldump --no-data --skip-add-locks --skip-comments --skip-opt --skip-set-charset photoprism > mariadb.sql` in a terminal:
17+
The following dump was created by running `mariadb-dump --no-data --skip-add-locks --skip-comments --skip-opt --skip-set-charset photoprism > mariadb.sql` in a terminal:
1818

1919
[mariadb.sql](mariadb.sql)
2020

setup/docker/arm64/docker-compose.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ services:
115115
security_opt:
116116
- seccomp:unconfined
117117
- apparmor:unconfined
118-
command: mysqld --innodb-buffer-pool-size=256M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
118+
command: mariadbd --innodb-buffer-pool-size=256M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
119119
## Never store database files on an unreliable device such as a USB flash drive, an SD card, or a shared network folder:
120120
volumes:
121121
- "./database:/var/lib/mysql" # DO NOT REMOVE

setup/docker/cloud/docker-compose.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ services:
198198
security_opt:
199199
- seccomp:unconfined
200200
- apparmor:unconfined
201-
command: mysqld --innodb-buffer-pool-size=512M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
201+
command: mariadbd --innodb-buffer-pool-size=512M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
202202
## Never store database files on an unreliable device such as a USB flash drive, an SD card, or a shared network folder:
203203
volumes:
204204
- "./database:/var/lib/mysql" # DO NOT REMOVE

setup/docker/docker-compose.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ services:
114114
security_opt: # see https://github.com/MariaDB/mariadb-docker/issues/434#issuecomment-1136151239
115115
- seccomp:unconfined
116116
- apparmor:unconfined
117-
command: mysqld --innodb-buffer-pool-size=512M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
117+
command: mariadbd --innodb-buffer-pool-size=512M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
118118
## Never store database files on an unreliable device such as a USB flash drive, an SD card, or a shared network folder:
119119
volumes:
120120
- "./database:/var/lib/mysql" # DO NOT REMOVE

setup/docker/macos/docker-compose.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ services:
8888
- apparmor:unconfined
8989
## --lower-case-table-names=1 stores tables in lowercase and compares names in a case-insensitive manner
9090
## see https://mariadb.com/kb/en/server-system-variables/#lower_case_table_names
91-
command: mysqld --lower-case-table-names=1 --innodb-buffer-pool-size=512M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
91+
command: mariadbd --lower-case-table-names=1 --innodb-buffer-pool-size=512M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
9292
volumes:
9393
- "database:/var/lib/mysql" # Named volume "database" is defined at the bottom (DO NOT REMOVE)
9494
environment:

setup/docker/nvidia/docker-compose.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ services:
118118
security_opt: # see https://github.com/MariaDB/mariadb-docker/issues/434#issuecomment-1136151239
119119
- seccomp:unconfined
120120
- apparmor:unconfined
121-
command: mysqld --innodb-buffer-pool-size=512M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
121+
command: mariadbd --innodb-buffer-pool-size=512M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
122122
## Never store database files on an unreliable device such as a USB flash drive, an SD card, or a shared network folder:
123123
volumes:
124124
- "./database:/var/lib/mysql" # DO NOT REMOVE

setup/docker/scheduler/docker-compose.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ services:
9696
security_opt:
9797
- seccomp:unconfined
9898
- apparmor:unconfined
99-
command: mysqld --innodb-buffer-pool-size=512M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
99+
command: mariadbd --innodb-buffer-pool-size=512M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
100100
## Never store database files on an unreliable device such as a USB flash drive, an SD card, or a shared network folder:
101101
volumes:
102102
- "./database:/var/lib/mysql" # DO NOT REMOVE

setup/docker/windows/docker-compose.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ services:
9696
- apparmor:unconfined
9797
## --lower-case-table-names=1 stores tables in lowercase and compares names in a case-insensitive manner
9898
## see https://mariadb.com/kb/en/server-system-variables/#lower_case_table_names
99-
command: mysqld --innodb-buffer-pool-size=512M --lower-case-table-names=1 --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
99+
command: mariadbd --innodb-buffer-pool-size=512M --lower-case-table-names=1 --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120
100100
volumes:
101101
- "database:/var/lib/mysql" # Named volume "database" is defined at the bottom (DO NOT REMOVE)
102102
environment:

setup/podman/docker-compose.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ services:
108108
- apparmor:unconfined
109109
## --lower-case-table-names=1 stores tables in lowercase and compares names in a case-insensitive manner
110110
## see https://mariadb.com/kb/en/server-system-variables/#lower_case_table_names
111-
command: mysqld --innodb-buffer-pool-size=2G --lower-case-table-names=1 --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=180
111+
command: mariadbd --innodb-buffer-pool-size=2G --lower-case-table-names=1 --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=180
112112
volumes:
113113
- "./database:/var/lib/mysql"
114114
environment:

0 commit comments

Comments
 (0)