【发布时间】:2021-07-16 08:21:43
【问题描述】:
以下 Dockerfile 运行一个简单的脚本,该脚本应该启动一个 React 应用程序和一个 python 应用程序:
# syntax=docker/dockerfile:1
FROM nikolaik/python-nodejs
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip3 install -r requirements.txt
COPY RPDC-front-end/package.json RPDC-front-end/package.json
RUN cd RPDC-front-end && npm install
COPY . .
EXPOSE 1234
RUN chmod u+r+x wrapper-script.sh
CMD ./wrapper-script.sh
./wrapper-script.sh 文件如下:
#!/bin/sh
python3 -m launcher.py
cd RPDC-front-end && npm start
我可以看到 python 和 node 包都安装在它们适当的位置,但只有 python 应用程序启动。包装脚本中的 npm start 命令似乎不起作用。但是,如果我打开正在运行的容器的终端并在 RDPC-front-end 目录(所有节点包和相关代码所在的位置)中手动运行npm start,则应用程序将构建并可以通过端口 1234 访问。如何我可以修复我的脚本/dockerfile 以便 npm start 命令正常工作吗?
【问题讨论】:
-
我认为您必须在 sh 文件中的 npm start 之前添加 npm build。
-
python3 -m launcher.py可能会阻止您拨打下一行电话?尝试将其作为后台进程运行python3 -m launcher.py & -
你能在两个独立的容器中运行这两个独立的任务吗(一个图像
FROM python和一个FROM node)?