我的dockerfile看起来有点像这样:--简化
FROM ubuntu:22.10
# Create my_user ...
# Copy Nginx configuration files
COPY ./nginx.conf /etc/nginx/nginx.conf
COPY ./proxy.conf /etc/nginx/conf.d/proxy.conf
WORKDIR /app
RUN npm install \
&& npm run build
WORKDIR /app/frontend
RUN npm install \
&& npm run build
RUN sudo cp -a ./dist/. /var/www/html
WORKDIR /app
CMD ["sh", "-c", "nginx -g 'daemon off;' & npm run start:prod"]
字符串
这是我的代理。conf
upstream backend {
server localhost:3000;
}
server {
listen 8080;
server_name _;
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
location ~ \.(css|js)$ {
add_header Content-Type text/plain;
try_files $uri =404;
}
location /api {
proxy_pass http://backend/api;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
型
这是我的nginx.conf
user my_user;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
# Other event configurations if needed
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
sendfile on;
include /etc/nginx/conf.d/*.conf;
}
型
在本地,这就像一个魅力,但一旦部署在云中运行,并试图访问/API下的路径,如my_domain.bla/api/here/we/are我从nginx得到一个日志说:
第一个月
Nginx正在侦听端口8080,而我的后端应用程序正在端口3000上运行(我看到来自容器的清晰日志,确认应用程序运行正常并侦听正确的端口)
我希望proxy_pass在云上运行时能像在本地运行时一样工作。有谁知道云计算和本地化的区别吗?我的第一个想法是nginx可能试图将请求路由到主机,而不是内部的容器。后端端口没有暴露,所以它会解释连接被拒绝,但我如何解决这个问题?
1条答案
按热度按时间bbuxkriu1#
您的Nginx应用程序需要的CPU时间比您当前的Cloud Run配置提供的更多。容器生命周期中的guide将显示如何分配CPU时间。
为Cloud Run示例启用
CPU always allocated
。当CPU总是被分配时,存在额外的成本。查看此document以了解更多详细信息。