云运行错误:容器无法启动 [英] Cloud Run error: Container failed to start
问题描述
我无法将基本的Angular应用部署到Google Cloud Run。该错误表明该端口8080不能正确提供服务,但是在我的计算机localhost:8080上本地运行会显示该应用程序。因此,如果有人有想法,我可能需要一些额外的资源来运行云?
I am failing to get a basic Angular app deploying to Google Cloud Run. The error would suggest it is not being served correctly at port 8080, but running locally on my machine localhost:8080 displays the app. So possibly I need something extra for cloud run, if anybody has some idea?
详细信息如下:
我创建了一个基本的角度应用程序
I create a basic angular app
ng new test-app
Dockerfile如下
The Dockerfile is as follows
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看到它
Locally I run the built container and I can see it at localhost:8080
docker container run -p 8080:80 gcr.io/$GOOGLE_PROJECT/test-app:$IMAGE
然后我将其部署到托管的Google Cloud Run。
I then deploy to Google Cloud Run managed.
gcloud run deploy test-app --image gcr.io/$GOOGLE_PROJECT/test-app:$IMAGE --platform managed
但是,它无法从错误开始
However, it fails to start with the error
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.
日志中没有其他错误。
谢谢。
nginx.conf文件,将端口设置为8080&服务器到高山上的0.0.0.0
I created the nginx.conf file, setting the port to 8080 & server to 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以复制该文件。
And updated the Dockerfile to copy over this file.
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;"]
推荐答案
I think与所有网络接口上的容器侦听有关。
I think is related to container listening on all network interfaces.
根据官方文档:
Cloud Run服务的常见原因无法启动的原因是容器中的
服务器进程配置为侦听
本地主机(127.0.0.1)地址。这指的是环回网络
接口,该接口无法从容器外部访问,而
则无法执行Cloud Run运行状况检查,从而导致
服务部署失败。
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.
要解决此问题,请将您的应用程序配置为启动HTTP服务器,以便
在所有网络接口上进行侦听,通常表示为0.0.0.0。
To solve this, configure your application to start the HTTP server to listen on all network interfaces, commonly denoted as 0.0.0.0.
这篇关于云运行错误:容器无法启动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!