Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
File renamed without changes.
128 changes: 92 additions & 36 deletions mariadb/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,45 +1,101 @@
FROM mariadb:11.2.2-jammy as build

ENV MARIADB_ROOT_PASSWORD="unikraft"

RUN /usr/bin/sed -i '/^[ \t]\+exec "\$@"/d' /usr/local/bin/docker-entrypoint.sh
RUN /usr/local/bin/docker-entrypoint.sh mariadbd
RUN /usr/bin/sed -i 's/^#\(user[ \t]\+\).*$/\1= root/g' /etc/mysql/mariadb.conf.d/50-server.cnf
RUN /usr/bin/sed -i 's/^#\(bind-address[ \t]\+\).*$/\1= 0.0.0.0/g' /etc/mysql/mariadb.conf.d/50-server.cnf
RUN /usr/bin/sed -i 's/^#skip-name-resolve/skip-name-resolve=ON/g' /etc/mysql/mariadb.conf.d/50-server.cnf

RUN mkdir -p /home/run/mysqld
FROM mariadb:11.7.2-noble AS build

FROM scratch

COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt

# MariaDB binary
COPY --from=build /usr/sbin/mariadbd /usr/sbin/mariadbd
COPY --from=build /home/run/mysqld /run/mysqld

COPY --from=build /var/lib /var/lib
# MariaDB support binaries
COPY --from=build /usr/bin/mariadb \
/usr/bin/mariadb-install-db \
/usr/bin/mariadb-tzinfo-to-sql \
/usr/bin/my_print_defaults \
/usr/bin/

# MariaDB support files
COPY --from=build /run/mysqld /run/mysqld
COPY --from=build /etc/mysql /etc/mysql
COPY --from=build /usr/lib/mysql /usr/lib/mysql
COPY --from=build /usr/share/mariadb /usr/share/mariadb

# MariaDB libraries
COPY --from=build /lib/x86_64-linux-gnu/libpcre2-8.so.0 \
/lib/x86_64-linux-gnu/libcrypt.so.1 \
/lib/x86_64-linux-gnu/liburing.so.2 \
/lib/x86_64-linux-gnu/libsystemd.so.0 \
/lib/x86_64-linux-gnu/libz.so.1 \
/lib/x86_64-linux-gnu/libssl.so.3 \
/lib/x86_64-linux-gnu/libcrypto.so.3 \
/lib/x86_64-linux-gnu/libstdc++.so.6 \
/lib/x86_64-linux-gnu/libm.so.6 \
/lib/x86_64-linux-gnu/libgcc_s.so.1 \
/lib/x86_64-linux-gnu/libc.so.6 \
/lib/x86_64-linux-gnu/libcap.so.2 \
/lib/x86_64-linux-gnu/libgcrypt.so.20 \
/lib/x86_64-linux-gnu/liblz4.so.1 \
/lib/x86_64-linux-gnu/liblzma.so.5 \
/lib/x86_64-linux-gnu/libzstd.so.1 \
/lib/x86_64-linux-gnu/libgpg-error.so.0 \
/lib/x86_64-linux-gnu/libedit.so.2 \
/lib/x86_64-linux-gnu/libncurses.so.6 \
/lib/x86_64-linux-gnu/libtinfo.so.6 \
/lib/x86_64-linux-gnu/libbsd.so.0 \
/lib/x86_64-linux-gnu/libmd.so.0 \
/lib/x86_64-linux-gnu/

COPY --from=build /lib/x86_64-linux-gnu/libpcre2-8.so.0 /lib/x86_64-linux-gnu/libpcre2-8.so.0
COPY --from=build /lib/x86_64-linux-gnu/libcrypt.so.1 /lib/x86_64-linux-gnu/libcrypt.so.1
COPY --from=build /lib/x86_64-linux-gnu/liburing.so.2 /lib/x86_64-linux-gnu/liburing.so.2
COPY --from=build /lib/x86_64-linux-gnu/libpmem.so.1 /lib/x86_64-linux-gnu/libpmem.so.1
COPY --from=build /lib/x86_64-linux-gnu/libsystemd.so.0 /lib/x86_64-linux-gnu/libsystemd.so.0
COPY --from=build /lib/x86_64-linux-gnu/libz.so.1 /lib/x86_64-linux-gnu/libz.so.1
COPY --from=build /lib/x86_64-linux-gnu/libssl.so.3 /lib/x86_64-linux-gnu/libssl.so.3
COPY --from=build /lib/x86_64-linux-gnu/libcrypto.so.3 /lib/x86_64-linux-gnu/libcrypto.so.3
COPY --from=build /lib/x86_64-linux-gnu/libstdc++.so.6 /lib/x86_64-linux-gnu/libstdc++.so.6
COPY --from=build /lib/x86_64-linux-gnu/libm.so.6 /lib/x86_64-linux-gnu/libm.so.6
COPY --from=build /lib/x86_64-linux-gnu/libc.so.6 /lib/x86_64-linux-gnu/libc.so.6
# Loader
COPY --from=build /lib64/ld-linux-x86-64.so.2 /lib64/ld-linux-x86-64.so.2
COPY --from=build /lib/x86_64-linux-gnu/libndctl.so.6 /lib/x86_64-linux-gnu/libndctl.so.6
COPY --from=build /lib/x86_64-linux-gnu/libdaxctl.so.1 /lib/x86_64-linux-gnu/libdaxctl.so.1
COPY --from=build /lib/x86_64-linux-gnu/liblzma.so.5 /lib/x86_64-linux-gnu/liblzma.so.5
COPY --from=build /lib/x86_64-linux-gnu/libzstd.so.1 /lib/x86_64-linux-gnu/libzstd.so.1
COPY --from=build /lib/x86_64-linux-gnu/liblz4.so.1 /lib/x86_64-linux-gnu/liblz4.so.1
COPY --from=build /lib/x86_64-linux-gnu/libcap.so.2 /lib/x86_64-linux-gnu/libcap.so.2
COPY --from=build /lib/x86_64-linux-gnu/libgcrypt.so.20 /lib/x86_64-linux-gnu/libgcrypt.so.20
COPY --from=build /lib/x86_64-linux-gnu/libgcc_s.so.1 /lib/x86_64-linux-gnu/libgcc_s.so.1
COPY --from=build /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.1
COPY --from=build /lib/x86_64-linux-gnu/libuuid.so.1 /lib/x86_64-linux-gnu/libuuid.so.1
COPY --from=build /lib/x86_64-linux-gnu/libkmod.so.2 /lib/x86_64-linux-gnu/libkmod.so.2
COPY --from=build /lib/x86_64-linux-gnu/libgpg-error.so.0 /lib/x86_64-linux-gnu/libgpg-error.so.0

# User database
COPY --from=build /etc/passwd /etc/passwd
COPY --from=build /etc/shadow /etc/shadow

# Entrypoint scripts
COPY --from=build /usr/local/bin/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
COPY --from=build /docker-entrypoint-initdb.d /docker-entrypoint-initdb.d

# Support binaries for entrypoint script
COPY --from=build /bin/sh /bin/sh
COPY --from=build /bin/bash /bin/bash
COPY --from=build /usr/bin/date /usr/bin/date
COPY --from=build /usr/bin/awk /usr/bin/awk
COPY --from=build /usr/bin/id /usr/bin/id
COPY --from=build /usr/bin/mkdir /usr/bin/mkdir
COPY --from=build /usr/bin/find /usr/bin/find
COPY --from=build /usr/bin/kill /usr/bin/kill
COPY --from=build /usr/bin/chown /usr/bin/chown
COPY --from=build /usr/bin/chmod /usr/bin/chmod
COPY --from=build /usr/bin/ls /usr/bin/ls
COPY --from=build /usr/bin/sed /usr/bin/sed
COPY --from=build /usr/bin/uname /usr/bin/uname
COPY --from=build /usr/bin/cat /usr/bin/cat
COPY --from=build /usr/bin/sleep /usr/bin/sleep
COPY --from=build /usr/bin/pwgen /usr/bin/pwgen
COPY --from=build /usr/local/bin/gosu /usr/local/bin/gosu
COPY --from=build /bin/mount /bin/mount

# Support files
COPY --from=build /etc/alternatives /etc/alternatives
COPY --from=build /usr/share/zoneinfo /usr/share/zoneinfo

# Libraries for support binaries
COPY --from=build /lib/x86_64-linux-gnu/libtinfo.so.6 \
/lib/x86_64-linux-gnu/libc.so.6 \
/lib/x86_64-linux-gnu/libsigsegv.so.2 \
/lib/x86_64-linux-gnu/libreadline.so.8 \
/lib/x86_64-linux-gnu/libmpfr.so.6 \
/lib/x86_64-linux-gnu/libgmp.so.10 \
/lib/x86_64-linux-gnu/libm.so.6 \
/lib/x86_64-linux-gnu/libselinux.so.1 \
/lib/x86_64-linux-gnu/libacl.so.1 \
/lib/x86_64-linux-gnu/libmount.so.1 \
/lib/x86_64-linux-gnu/libblkid.so.1 \
/lib/x86_64-linux-gnu/

# Wrapper script
COPY ./wrapper.sh /usr/local/bin/wrapper.sh

# Mariadb configuration file
COPY ./50-server.cnf /etc/mysql/mariadb.conf.d/50-server.cnf
6 changes: 3 additions & 3 deletions mariadb/Kraftfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ spec: v0.6
runtime: base-compat:latest

labels:
cloud.unikraft.v1.instances/scale_to_zero.policy: "off"
cloud.unikraft.v1.instances/scale_to_zero.stateful: "false"
cloud.unikraft.v1.instances/scale_to_zero.policy: "idle"
cloud.unikraft.v1.instances/scale_to_zero.stateful: "true"
cloud.unikraft.v1.instances/scale_to_zero.cooldown_time_ms: 1000

rootfs: ./Dockerfile

cmd: ["/usr/sbin/mariadbd", "--user=root", "--log-bin"]
cmd: ["/usr/local/bin/wrapper.sh"]
21 changes: 20 additions & 1 deletion mariadb/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ export UKC_METRO=fra
When done, invoke the following command to deploy this app on Unikraft Cloud:

```bash
kraft cloud deploy -p 3306:3306/tls -M 1Gi .
kraft cloud deploy -M 1Gi -p 3306:3306/tls --env MARIADB_ROOT_PASSWORD="unikraft" .
```

The output shows the instance address and other details:
Expand Down Expand Up @@ -95,6 +95,25 @@ When done, you can remove the instance:
kraft cloud instance remove mariadb-w2g2z
```

> **Tip:**
> This example uses the [`idle` scale-to-zero policy](https://unikraft.com/docs/api/platform/v1/instances#scaletozero_policy) by default (see the `labels` section in the `Kraftfile`).

## Using volumes

You can use [volumes](https://unikraft.com/docs/platform/volumes) for data persistence for your MariaDB instance.
For that you would first create a volume:

```console
kraft cloud volume create --name mariadb-store --size 512
```

Then start the MariaDB instance and mount that volume:

```bash
kraft cloud deploy -M 1Gi -p 3306:3306/tls --env MARIADB_ROOT_PASSWORD="unikraft" --volume mariadb-store:/var/lib .
```


## Customize your app

To customize the app, update the files in the repository, listed below:
Expand Down
File renamed without changes.
1 change: 0 additions & 1 deletion mariadb11.7-volumes/.dockerignore

This file was deleted.

1 change: 0 additions & 1 deletion mariadb11.7-volumes/.gitignore

This file was deleted.

101 changes: 0 additions & 101 deletions mariadb11.7-volumes/Dockerfile

This file was deleted.

12 changes: 0 additions & 12 deletions mariadb11.7-volumes/Kraftfile

This file was deleted.

39 changes: 0 additions & 39 deletions mariadb11.7-volumes/README.md

This file was deleted.

Loading