DodoApp: Pass lowercased port names to app-runner

Use Debian based Deno container image

Change-Id: I90300af78fe55ac6504c352c62e0f1d48adf89da
diff --git a/apps/app-runner/Dockerfile.deno.2.2.0 b/apps/app-runner/Dockerfile.deno.2.2.0
index 6145bf9..36c9cfb 100644
--- a/apps/app-runner/Dockerfile.deno.2.2.0
+++ b/apps/app-runner/Dockerfile.deno.2.2.0
@@ -1,10 +1,8 @@
-FROM denoland/deno:alpine-2.2.0
+FROM denoland/deno:debian-2.2.0
 
 ARG TARGETARCH
 
-RUN apk update
-# TODO(gio): git and openssh is not generally required, we need it for canvas.
-# Instead allow dodo-app definition to include required tool list.
-RUN apk add openssh-keygen openssh
+RUN apt-get update -y
+RUN apt-get install -y openssl
 
 COPY app-runner_${TARGETARCH} /usr/bin/app-runner
diff --git a/apps/app-runner/Dockerfile.nextjs.deno.2.0.0 b/apps/app-runner/Dockerfile.nextjs.deno.2.0.0
index 98f62ed..8acc5b9 100644
--- a/apps/app-runner/Dockerfile.nextjs.deno.2.0.0
+++ b/apps/app-runner/Dockerfile.nextjs.deno.2.0.0
@@ -2,4 +2,7 @@
 
 ARG TARGETARCH
 
+RUN apt-get update -y
+RUN apt-get install -y openssl
+
 COPY app-runner_${TARGETARCH} /usr/bin/app-runner
diff --git a/apps/app-runner/server.go b/apps/app-runner/server.go
index a65cb0a..6efd222 100644
--- a/apps/app-runner/server.go
+++ b/apps/app-runner/server.go
@@ -122,6 +122,7 @@
 }
 
 func (s *Server) run() error {
+	logM := io.MultiWriter(os.Stdout, s.logs)
 	newDir := s.appDir
 	commands := []command{}
 	if !s.agentMode {
@@ -135,13 +136,13 @@
 		if _, err := os.Stat(filepath.Join(newDir, ".git")); err != nil && os.IsNotExist(err) {
 			commit, err := CloneRepositoryBranch(s.repoAddr, s.branch, s.rootDir, s.signer, newDir)
 			if err != nil {
-				fmt.Fprintf(s.logs, "!!! dodo: Failed to clone repository\n")
+				fmt.Fprintf(logM, "!!! dodo: Failed to clone repository: %s\n", err)
 				s.status = &Status{
 					Commit: nil,
 				}
 				return err
 			}
-			fmt.Fprintf(s.logs, "!!! dodo: Successfully cloned repository %s\n", commit.Hash)
+			fmt.Fprintf(logM, "!!! dodo: Successfully cloned repository %s\n", commit.Hash)
 			s.status = &Status{
 				Commit:   commit,
 				Commands: []CommandStatus{},
@@ -201,7 +202,6 @@
 			State:   "waiting",
 		})
 	}
-	logM := io.MultiWriter(os.Stdout, s.logs)
 	for i, c := range commands {
 		if i > 0 {
 			s.status.Commands[i-1].State = "success"
@@ -215,8 +215,7 @@
 			Stderr: logM,
 		}
 		cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true}
-		fmt.Printf("Running: %s\n", c)
-		fmt.Fprintf(s.logs, "!!! dodo: Running: %s\n", c)
+		fmt.Fprintf(logM, "!!! dodo: Running: %s\n", c)
 		s.status.Commands[i].State = "running"
 		if i < len(commands)-1 {
 			if err := cmd.Run(); err != nil {
diff --git a/core/installer/app_configs/dodo_app.cue b/core/installer/app_configs/dodo_app.cue
index 439b419..9c433bd 100644
--- a/core/installer/app_configs/dodo_app.cue
+++ b/core/installer/app_configs/dodo_app.cue
@@ -354,7 +354,7 @@
 	lastCmdEnv: [...string]
 
 	runConfiguration: [{
-		bin: "npm"
+		bin: "deno"
 		args: ["install"]
 	},
 		for c in preBuildCommands {
@@ -708,7 +708,7 @@
 				name:    svc.name
 				apiPort: svc.apiPort
 				appPorts: [for p in svc.ports {
-					name:          p.name
+					name:          strings.ToLower(p.name)
 					containerPort: p.value
 					protocol:      p.protocol
 				}]
@@ -822,8 +822,12 @@
 			}
 			cpuCores: 2
 			memory:   "3Gi"
-			ports:    svc.ports
-			sshKey:   input.key
+			ports: [for p in svc.ports {
+				name:     strings.ToLower(p.name)
+				value:    p.value
+				protocol: p.protocol
+			}]
+			sshKey: input.key
 			configFiles: {
 				"env.sh": _envProfile
 			}