我想将我的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但它没有帮助我。如果你能帮助我。感谢您的回答。
通常,在运行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看到你的角度应用程序
我的代码处于干运行模式(我没有测试它),所以请测试它并根据需要进行修改。
资料来源: