node.js - 通过纱线在 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,我的问题是在启动时。
解决方案
DockerfileUSER
指令告诉映像应该以哪个用户身份启动。su
您无需手动调用CMD
; 只需将其删除。
USER appuser
CMD ["yarn", "start"]
推荐阅读
- c++ - glfwSwapBuffers(窗口); 失败并抛出异常
- vue.js - vue/test-utils 和 jest 单元测试问题
- intellij-idea - IntelliJ - 有没有办法将 SceneBuilder 移动到 IDE 的右侧?
- reactjs - 使用 ReactJs 帮助我在提交新游之前验证每个字段
- python-3.9 - Python,PIP 安装 pandas 分析错误
- java - 使用带有 netty-tcnative 的非默认 openssl 引擎
- ios - SwiftUI 视图的快照被部分截断
- firebase - Flutter - Firebase 部署不更新新版本
- php - 如果行超过 2 php 刀片,则隐藏按钮
- reactjs - 复选框不会在 JavaScript 复选框检查上应用样式表