Closed ken1714 closed 9 months ago
gcloud auth application-default login
のログイン処理をあらかじめ実行することで、以下のようにわざわざcredentialsへのパスを書く必要がなくなる。
provider "google" {
credentials = "${file("<your-credential-file-path>")}"
project = "project-id"
region = "asia-northeast1"
}
DockerイメージをGCPの自分のプロジェクトにpushする前に、以下の操作が必要。
$ gcloud auth configure-docker
その後は普通にpushするだけ。
$ docker push gcr.io/${project_id}/sample-nodejs
この辺りを参考にNode.jsのサンプルアプリを作ってみた。
const http = require('http');
const fs = require('fs');
let server = http.createServer((req, res) => {
fs.readFile('./index.html', 'utf-8', (error, data) => {
res.writeHead(200, { 'Content-Type': 'text/html' });
res.write(data);
res.end();
});
});
server.listen(3000);
console.log('Server Start!');
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Hello Node.js</title>
</head>
<body>
<h1>Hello Node.js</h1>
<p>HTMLを表示する</p>
</body>
</html>
Dockerfile
FROM node:20.11-alpine
WORKDIR /app
COPY . .
EXPOSE 3000
USER node
CMD ["node", "index.js"]
ただし、ポート3000を使用する場合、Cloud Run側でポートを開放する必要あり。
resource "google_cloud_run_v2_service" "default" {
# ...
template {
#...
containers {
image = var.image
ports {
container_port = 3000
}
}
}
}
terraform apply
する前に少しハマったので共有。