Docker apache 和 angular

Docker apache 和 angular

我有一个 Apache 服务器(在 docker 中),它分发到多个应用程序。我有一个 Angular 应用程序,我想将其部署在我的服务器上,但是当通过域访问时,检索静态文件时出现 502 错误:

www.mydomain.com => 200
www.mydomain.com/assets/css/mycss.css => 502
www.mydomain.com/.../*.js => 502

这是我的 Angular Dockerfile:

FROM node:14.5.0-alpine As builder

WORKDIR /usr/src/app

COPY package.json package-lock.json ./

RUN npm install

COPY . .

RUN npm install @angular/cli -g
RUN ng build --prod

FROM nginx:1.15.8-alpine

COPY --from=builder /usr/src/app/dist/angular-app/ /usr/share/nginx/html

我的(简化的)Apache 配置(mydomain.conf):

<VirtualHost *:443>
        ServerName www.mydomain.com
        ServerAlias www.mydomain.com

        SSLProxyEngine on
        SSLProxyVerify none
        SSLProxyCheckPeerCN off
        SSLProxyCheckPeerName off
        SSLProxyCheckPeerExpire off

        RewriteEngine on
        RewriteOptions inherit

        ProxyPreserveHost On

        # angular-app is the name of container, it is in same network that apache
        ProxyPass / http://angular-app Keepalive=On
        ProxyPassReverse / http://angular-app

</VirtualHost>

如果我直接访问 IP:端口,应用程序就可以正常工作。

有什么建议吗?提前致谢

答案1

您有两个 FROM 语句

FROM node:14.5.0-alpine As builder
FROM nginx:1.15.8-alpine

FROM 语句用于定义 docker 应从哪个镜像开始。一旦使用 FROM,后续语句就只能将项目 ADD、RUN 或 COPY 到容器中。在您的例子中,您将从节点镜像指示 Docker,然后在几个语句之后从 nginx 镜像开始。

构建 docker 镜像时,确保它只解决一个问题。如果您计划让 angular 应用程序从节点镜像开始。如果您想要提供 angular 应用程序,请构建它并将其复制到 nginx 镜像。

相关内容