gpt4 book ai didi

dockerfile - 云运行错误 : Container failed to start

转载 作者:行者123 更新时间:2023-12-04 11:23:56 27 4
gpt4 key购买 nike

我无法将基本的 Angular 应用程序部署到 Google Cloud Run。该错误表明它未在端口 8080 上正确提供服务,但在我的机器上本地运行 localhost:8080 显示该应用程序。所以我可能需要一些额外的东西来运行云,如果有人有什么想法吗?

详细情况如下:

我创建了一个基本的角度应用程序

ng new test-app

Dockerfile 如下
FROM node:latest as node
WORKDIR /app
COPY . .

RUN npm install
RUN npm run build --prod

ENV PORT=8080

FROM nginx:latest
COPY --from=node /app/dist/test-app /usr/share/nginx/html
EXPOSE 8080
CMD ["nginx", "-g", "daemon off;"]

在本地我运行构建的容器,我可以在 localhost:8080 看到它
docker container run -p 8080:80 gcr.io/$GOOGLE_PROJECT/test-app:$IMAGE

screenshot

然后我部署到 Google Cloud Run 托管。
gcloud run deploy test-app --image gcr.io/$GOOGLE_PROJECT/test-app:$IMAGE --platform managed

但是,它无法以错误开头
Cloud Run error: Container failed to start. Failed to start and then listen on the port defined by the PORT environment variable. Logs for this revision might contain more information.

日志中没有其他错误。

谢谢。

我从 How to change the port of nginx when using with docker 获得的有效解决方案

我创建了 nginx.conf 文件,将端口设置为 8080,将服务器设置为 0.0.0.0
# on alpine, copy to /etc/nginx/nginx.conf
user root;
worker_processes auto;

error_log /var/log/nginx/error.log warn;

events {
worker_connections 1024;
}

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
sendfile off;
access_log off;
keepalive_timeout 3000;
server {
listen 8080;
root /usr/share/nginx/html;
index index.html;
server_name 0.0.0.0;
client_max_body_size 16m;
}
}

并更新了 Dockerfile 以复制此文件。
FROM node:latest as node
WORKDIR /app
COPY . .
RUN npm install
RUN npm run build --prod

ENV PORT=8080

FROM nginx:alpine
COPY --from=node /app/dist/streamin-app/ /usr/share/nginx/html/
COPY nginx.conf /etc/nginx/
EXPOSE 8080
CMD ["nginx", "-g", "daemon off;"]

最佳答案

我认为与容器监听所有网络接口(interface)有关。

根据官方文档:

A common reason for Cloud Run services failing to start is that the server process inside the container is configured to listen on the localhost (127.0.0.1) address. This refers to the loopback network interface, which is not accessible from outside the container and therefore Cloud Run health check cannot be performed, causing the service deployment failure.

To solve this, configure your application to start the HTTP server to listen on all network interfaces, commonly denoted as 0.0.0.0.

关于dockerfile - 云运行错误 : Container failed to start,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59524020/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com