首页 > 解决方案 > 通过纱线在 Docker 中运行节点应用程序

问题描述

我正在尝试创建一个 docker 图像,其目的是通过使用 yarn 和 micro 将网页的抓取作为 uService 公开。

我的 Docker 文件如下:

FROM cheeaun/puppeteer:latest
RUN useradd -ms /bin/bash appuser
COPY . /app
RUN mkdir -p /app/logs
RUN mkdir -p /app/buffer
RUN apt-get update
RUN apt-get install make -y
RUN apt-get install g++ -y
RUN cd /app && yarn --production --pure-lockfile
EXPOSE 3000   
USER appuser
WORKDIR /app
CMD ["su", "-", "user", "yarn", "start"]

创建图像按预期进行:

docker build . -t <application-name>:<tag>

当我尝试从刚刚创建的映像启动容器时,它立即停止,通过
docker logs f5fa9ba2e451检查日志

令人沮丧:

su: must be run from a terminal

我做错了什么?蒂亚!

PS指出重复的问题并不能解决我的问题,因为它指的是对图像进行ssh,我的问题是在启动时。

标签: node.jsdockeryarnpkgpuppeteer

解决方案


DockerfileUSER指令告诉映像应该以哪个用户身份启动。su您无需手动调用CMD; 只需将其删除。

USER appuser
CMD ["yarn", "start"]

推荐阅读