首页 > 解决方案 > 容器启动时如何运行命令 - Docker

问题描述

这是 Dockerfile:

FROM nginx:stable-alpine

COPY ./mailservice /var/www/backend
COPY ./dist /usr/share/nginx/html
COPY ./docker/nginx_config/default.conf /etc/nginx/conf.d/default.conf
COPY ./docker/nginx_config/.htpasswd /etc/nginx

RUN chown -R nginx:nginx /usr/share/nginx/html/ \
    && chown -R nginx:nginx /etc/nginx/.htpasswd \
    && apk add --update nodejs nodejs-npm

WORKDIR /var/www/backend
RUN npm run start

EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]

但是我的RUN npm run start不起作用,我必须手动将外壳附加到容器,然后自己运行它。npm run start容器启动后正确的启动方式是什么?

更新

CMD ["nginx", "-g", "daemon off;"]
ENTRYPOINT ["node", "server.js"]

这行得通吗?

标签: node.jsdockernpm

解决方案


最佳实践表明每个容器不应运行多个进程。除非您的应用程序是以从唯一入口点启动多个进程的方式制作的。

但是您可以使用一些解决方法。尝试检查这个问题:Docker multiple entrypoints


推荐阅读