gpt4 book ai didi

node.js - 如何在 Dockerfile 中执行 2 个单独的命令?

转载 作者:行者123 更新时间:2023-12-04 18:42:30 25 4
gpt4 key购买 nike

我有一个 Dockerfile,它在 ubuntu baseimage 上安装多个服务,例如 npm、nodejs 和 ssh。
我希望能够 ssh 进入容器并运行 node express 应用程序。
它完美地运行其中之一。但我不知道如何启动这两个服务!
要运行 ssh 我做了:

CMD ["/usr/sbin/sshd","-D"]  
对于 Node 应用程序,我克隆了一个 git repo 并运行:
CMD ["node" "app.js"]
每一个都完美运行。
但是我怎样才能执行这两个命令呢?
我尝试将它们都放在 CMD 指令中:
CMD ["/usr/sbin/sshd","-D", "node", "app.js"]
我还尝试使用 RUN 执行其中一个:
RUN node app.js
CMD ["/usr/sbin/sshd","-D"]
它执行但此时卡住并且不会继续计算图像..
我如何执行 /usr/sbin/sshd -D (我需要运行 ssh)以及 node app.js ?
这是完整的 Dockerfile:
FROM ubuntu:latest

RUN apt update && apt install openssh-server sudo -y

RUN apt install git -y

RUN apt install nodejs -y

RUN apt install npm -y

RUN npm install express

RUN npm install better-sqlite3

RUN npm install morgan

RUN echo "PermitRootLogin yes">etc/ssh/sshd_config

RUN echo 'root:root' | chpasswd

RUN git clone https://github.com/mauriceKalevra/Web2-Projekt.git

WORKDIR Web2-Projekt

RUN npm install


RUN service ssh start

EXPOSE 22


#CMD ["/usr/sbin/sshd","-D", "&&", "node", "app.js"lss" ]

CMD ["node", "app.js"]

最佳答案

有两个选项可以做到这一点。
选项1
使用 shell 和 &&执行两个命令。

FROM debian:stretch-slim as builder
CMD touch test.txt && ls
选项 2
将所有你想执行的命令放入可执行脚本 entrypoint.sh并在 CMD 中运行该脚本
FROM debian:stretch-slim as builder
COPY entrypoint.sh /entrypoint.sh
CMD ./entrypoint.sh
入口点.sh
#!/bin/sh
touch test.txt
ls
编辑
请注意,默认情况下,命令将按顺序执行,因此第二个命令只会在第一个命令之后执行。如果您的第一个进程永远不会终止,那么第二个进程将永远不会启动。使用 &在后台执行命令。有关如何并行或顺序运行命令的更多信息,请参阅 this thread .

关于node.js - 如何在 Dockerfile 中执行 2 个单独的命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71624181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com