使用Node js将Angular应用作为docker映像运行

时间:2019-06-21 12:51:27

标签: node.js angular docker dockerfile docker-image

尝试在docker中构建有角度的应用程序,并使用Node js在我的本地容器中运行。

我已经在Dockerfile下面使用了构建映像,但是我不确定运行时缺少什么。有人可以指出我吗?

Dockerfile:

FROM node:10.15.3
ENV HOME=/home
WORKDIR $HOME
RUN npm config set strict-ssl false \
    && npm config set proxy http://proxy.xxxxxx.com:8080
COPY package.json .
RUN npm install

使用以下命令成功创建的图像

docker build -t example .

我正在尝试使用以下命令运行该图像,但这无济于事

docker run -p 4201:4200 example

4 个答案:

答案 0 :(得分:2)

容器需要运行一个前台进程,然后它不会退出。否则,容器将直接退出。

对于您的情况,您需要在COPY时将docker build的nodejs项目保存到容器中,并像CMD一样在CMD [ "npm", "start" ]中启动项目。由于Web服务器没有退出,因此您的容器也不会退出。

一篇不错的文章here,供您参考如何对Node.js Web应用进行docker化。

答案 1 :(得分:1)

您的Dockerfile无法运行/服务您的应用程序,为此,您必须:

  • 安装angular / cli
  • 复制应用
  • 运行/提供应用程序
FROM node:10.15.3

RUN npm config set strict-ssl false \
    && npm config set proxy http://proxy.xxxxxx.com:8080

# get the app
WORKDIR /src
COPY . .

# install packages
RUN npm ci
RUN npm install -g @angular/cli

# start app
CMD ng serve --host 0.0.0.0

希望这会有所帮助。

答案 2 :(得分:0)

只需更新Dockerfile即可实现更多选项的目标,请参见here

# base image
FROM node:12.2.0

RUN npm config set strict-ssl false \
    && npm config set proxy http://proxy.xxxxxx.com:8080

# install chrome for protractor tests
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
RUN sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
RUN apt-get update && apt-get install -yq google-chrome-stable

# set working directory
WORKDIR /app

# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH

# install and cache app dependencies
COPY package.json /app/package.json
RUN npm install
RUN npm install -g @angular/cli@7.3.9

# add app
COPY . /app

# start app
CMD ng serve --host 0.0.0.0 

答案 3 :(得分:0)

还为以下Dockerfile拍摄照片!

FROM node:alpine

# get the app
WORKDIR /src

# install packages
RUN npm ci
RUN npm install -g @angular/cli
COPY package.json .
RUN npm install
COPY . .

# start app
CMD ["ng", "serve", "-o"]