【问题标题】:How to run `httpd` in Docker in detached mode using CMD in Dockerfile?如何使用 Dockerfile 中的 CMD 在 Docker 中以分离模式运行“httpd”?
【发布时间】:2020-10-16 05:23:17
【问题描述】:

这是我的 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 react-scripts@3.4.1 -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"]

【问题讨论】:

    标签: reactjs apache docker docker-compose dockerfile


    【解决方案1】:

    你应该删除CMD ["httpd"],见this

    CMD ["httpd-foreground"]

    那里已经有一个前台httpd了。

    最后,为什么 CMD ["httpd"] 不起作用?

    Dockerfile 中定义的CMD 将充当容器的PID1。在docker中,如果PID1退出,那么容器也会退出。

    • 如果使用CMD ["httpd-foreground"],apache进程会一直在前面,所以进程不会退出,那么容器是活的。
    • 如果使用CMD ["httpd"]httpd在执行后会直接退出,然后PID1退出,所以容器退出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      相关资源
      最近更新 更多