将Angular6项目部署到docker

问题描述 投票:1回答:1

我想将我的angular6项目部署到docker但我遇到了问题。我创建了Dockerfile:

# stage 1
    FROM node:latest as node
    WORKDIR /app
    COPY . .
    RUN npm install
    RUN npm run build --prod
    RUN npm install -g @angular/cli

    # stage 2
    FROM nginx:alpine
    COPY --from=node /app/dist/ClientAp /usr/share/nginx/html

当我这样做时,我写道:

docker build -t cltapp .

并运行:

docker run --rm -d -p 4200:4200 cltapp

我没有错误,但当我尝试打开我的应用程序localhost:4200/我有空白页面。我想,这是一个角度cli的问题,但我把这行RUN npm install -g @angular/cli添加到我的dockerfile但它没有帮助我。如果你能帮助我。感谢您的回答。

angular docker dockerfile
1个回答
2
投票

通常,在运行ng build --prod之后,index.html将直接放在dist forlder(dist/index.html)下。我认为这是你的情况,而不是dist/ClientAp/index.html。您可以通过在项目中运行ng build --prod并检查创建的dist文件夹来检查它。

--prod标志应该放在你的package.json => scripts部分:

"scripts": {
  ...
  "build": "ng build --prod",
  ...
}

如果它不存在并且你想在npm run build之后添加它,它应该在--之后添加,如:

npm run build -- --prod

所以,试试这个:

Dockerfile

# stage 1
FROM node:alpine as node

# Create app directory
WORKDIR /usr/src/app

# Bundle app source (make sure you have package.json copied)
COPY . .

# install dependencies, @angular cli will be installed here as well
RUN npm install

# build your project into dist folder
RUN npm run build

# stage 2
FROM nginx:alpine

WORKDIR /usr/share/nginx/html
COPY --from=node /usr/src/app/dist/ .

Nginx将在端口80上运行。如果要使用端口4200,请运行以下命令:

docker run --rm -d -p 4200:80 cltapp

现在,你应该在localhost:4200看到你的角度应用程序

我的代码处于干运行模式(我没有测试它),所以请测试它并根据需要进行修改。

资料来源:

© www.soinside.com 2019 - 2024. All rights reserved.