如何为Angular应用程序正确创建Docker图像?

如何为Angular应用程序正确创建Docker图像?,angular,docker,Angular,Docker,我正在尝试为我的Angular应用程序构建一个Docker映像,这个特定版本应该为dev env运行,所以代码不是prod build。这是我的Dockerfile: FROM node:alpine WORKDIR '/app' RUN npm install -g @angular/cli@latest COPY package.json . RUN npm install COPY . . CMD ["ng", "serve", "-o"] 图像会生成,但当我尝试从中运行容器

我正在尝试为我的Angular应用程序构建一个Docker映像,这个特定版本应该为dev env运行,所以代码不是prod build。这是我的Dockerfile:

FROM node:alpine

WORKDIR '/app'

RUN npm install -g @angular/cli@latest

COPY package.json .

RUN npm install

COPY . .

CMD ["ng", "serve", "-o"]
图像会生成,但当我尝试从中运行容器时

docker run -p 4200:4200 a42ac6b0a4c0
我收到这个消息

Cannot determine versions of "@angular/cli".
This likely means your local installation is broken. Please reinstall your packages.

删除最新的标签没有帮助。我怀疑它无法解析@angular/cli的版本,因为您的本地版本和全局版本不同。你能分享你的package.json吗? 您可能需要安装与本地版本相同的全局版本。 希望这有帮助。
[编辑答案]

在我的机器上用一个示例项目进行了尝试。对我来说效果很好。似乎您的本地CLI版本不同,请删除主机上的节点模块,然后构建docker映像。作为
COPY此步骤将覆盖Docker中安装在
npm install
中的现有节点模块。我已经在我的机器上运行了两个测试,它对我有效。所以我认为问题在于你复制了什么。如果节点模块存在,它将覆盖docker容器中节点模块的内容。尝试在.dockerginore中添加
node\u模块
。对于完全的Docker初学者,以下是如何在Docker中快速运行Angular