1
0
Fork 0
mirror of https://github.com/imjasonh/terraform-playground synced 2026-07-08 07:44:57 +00:00

drop some annoying stuff, write to the DB

Signed-off-by: Jason Hall <jason@chainguard.dev>
This commit is contained in:
Jason Hall 2024-04-17 15:58:03 -04:00
parent 319461f3c6
commit ae6e74d938
Failed to extract signature
2 changed files with 24 additions and 40 deletions

View file

@ -17,6 +17,10 @@ func main() {
}
defer db.Close()
if _, err := db.Exec("create table if not exists test (time text primary key)"); err != nil {
clog.Fatalf("failed to create table: %v", err)
}
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
row := db.QueryRow("select sqlite_version()")
var version string
@ -25,6 +29,23 @@ func main() {
}
clog.Infof("sqlite version: %s", version)
fmt.Fprintf(w, "sqlite version: %s", version)
if _, err := db.Exec("insert into test (time) values (datetime('now'))"); err != nil {
clog.Fatalf("failed to insert row: %v", err)
}
rows, err := db.Query("select * from test")
if err != nil {
clog.Fatalf("failed to query rows: %v", err)
}
defer rows.Close()
for rows.Next() {
var time string
if err := rows.Scan(&time); err != nil {
clog.Fatalf("failed to scan row: %v", err)
}
clog.Infof("time: %s", time)
fmt.Fprintf(w, "time: %s\n", time)
}
})
http.ListenAndServe(":8080", nil)
}

View file

@ -2,8 +2,7 @@
terraform {
required_providers {
ko = { source = "ko-build/ko" }
oci = { source = "chainguard-dev/oci" }
ko = { source = "ko-build/ko" }
}
}
@ -43,7 +42,6 @@ resource "ko_build" "build" {
resource "google_cloud_run_v2_service" "service" {
provider = google-beta // for empty_dir
name = "litestream"
location = local.region
launch_stage = "BETA"
@ -59,8 +57,8 @@ resource "google_cloud_run_v2_service" "service" {
}
containers {
image = oci_append.append.image_ref
args = ["replicate"]
image = "litestream/litestream"
args = ["replicate", "/data/db.sqlite", "gcs://${google_storage_bucket.bucket.name}/litestream"]
volume_mounts {
name = "data"
mount_path = "/data"
@ -77,39 +75,6 @@ resource "google_cloud_run_v2_service" "service" {
}
}
data "oci_ref" "litestream" { ref = "litestream/litestream" }
// Copy the litestream image to GCR, if it's changed.
// TODO: This should be an oci_copy resource.
resource "null_resource" "crane-cp" {
triggers = { digest = data.oci_ref.litestream.digest }
provisioner "local-exec" {
command = "crane cp --platform=linux/amd64 litestream/litestream gcr.io/${local.project_id}/litestream:latest"
}
}
resource "oci_append" "append" {
base_image = "gcr.io/${local.project_id}/litestream:latest"
layers = [{
files = {
"etc/litestream.yml" = {
contents = <<EOY
logging:
level: debug
type: json
stderr: true
dbs:
- path: /data/db.sqlite
replicas:
- url: gcs://${google_storage_bucket.bucket.name}/litestream
EOY
}
}
}]
}
// Allow all users to invoke the service
resource "google_cloud_run_v2_service_iam_member" "public" {
name = google_cloud_run_v2_service.service.name
@ -118,6 +83,4 @@ resource "google_cloud_run_v2_service_iam_member" "public" {
}
output "url" { value = google_cloud_run_v2_service.service.uri }
output "litestream-image" { value = oci_append.append.image_ref }
output "app-image" { value = ko_build.build.image_ref }