这是我的Dockerfile-
镜像成功构建,但是没有运行,它停止了。我想从Docker容器访问Apache服务器提供的网站。

# build environment
FROM node:13.12.0-alpine as build
WORKDIR /app
ENV PATH /app/node_modules/.bin:$PATH
COPY package.json ./
COPY package-lock.json ./
RUN npm ci --silent
RUN npm install [email protected] -g --silent
COPY . ./
RUN npm run build:staging

# production environment
FROM httpd:latest
COPY --from=build /app/build /usr/local/apache2/htdocs

EXPOSE 80

CMD ["httpd"]

最佳答案

您应该删除CMD ["httpd"],请参阅this:

那里已经有一个前台httpd了。
最后,为什么CMD [“httpd”]不起作用? CMD中定义的Dockerfile将充当您容器的PID1。在docker中,如果PID1退出,则容器也将退出。

  • 如果使用CMD ["httpd-foreground"],则apache进程将始终位于最前面,因此该进程不会退出,则该容器仍处于 Activity 状态。
  • 如果使用CMD ["httpd"],则httpd将在执行后直接退出,然后PID1退出,因此容器退出。
  • 关于reactjs - 如何在Dockerfile中使用CMD在分离模式下在Docker中运行 `httpd`?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64383322/

    10-13 05:54