1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
{ pkgs ? import <nixpkgs> { } }:
pkgs.writeShellScriptBin "hello-world" ''
set -euo pipefail
DB_FILE="''${1:-/data/db.sqlite}"
echo "=== SQLite-embedded Hello World (OCI) ==="
echo "Database file: $DB_FILE"
echo "PID: $$"
echo "Container environment: $(${pkgs.coreutils}/bin/uname -a)"
# Read application metadata from __app table
echo
echo "=== Application Metadata ==="
HOME=/tmp ${pkgs.sqlite}/bin/sqlite3 "$DB_FILE" "SELECT 'Name: ' || name, 'Version: ' || version, 'Entry Point: ' || entry_point FROM __app;"
# Show runtime environment
echo
echo "=== Runtime Environment ==="
echo "Working directory: $(${pkgs.coreutils}/bin/pwd)"
echo "Environment variables:"
${pkgs.coreutils}/bin/printenv | ${pkgs.gnugrep}/bin/grep -E '^(PATH|HOME|PWD|SQLITE_|APP_)' || true
echo "Mount points:"
${pkgs.util-linux}/bin/mount | ${pkgs.gnugrep}/bin/grep -E '(bind|tmpfs|proc)' || true
# Create application table and insert data
echo
echo "=== Database Operations ==="
HOME=/tmp ${pkgs.sqlite}/bin/sqlite3 "$DB_FILE" "
CREATE TABLE IF NOT EXISTS hello_log (
id INTEGER PRIMARY KEY AUTOINCREMENT,
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
message TEXT NOT NULL,
pid INTEGER,
container_info TEXT
);
INSERT INTO hello_log (message, pid, container_info) VALUES
('OCI Container started', $$, 'runc isolation'),
('Environment initialized', $$, 'namespaced'),
('Database accessible', $$, 'bind-mounted');
"
# Read back the data
echo "Data written to hello_log table:"
HOME=/tmp ${pkgs.sqlite}/bin/sqlite3 "$DB_FILE" "SELECT id, datetime(timestamp, 'localtime') as time, message, pid, container_info FROM hello_log ORDER BY id;"
echo
echo "=== Success ==="
echo "Hello world OCI application completed successfully!"
''
|