【问题标题】:Run docker container with sh from command line从命令行使用 sh 运行 docker 容器
【发布时间】:2021-12-23 09:39:08
【问题描述】:

这里是docker初学者,我有一个任务是创建一个可以让我的应用程序以这种方式运行的Dockerfile:

docker build -t newapp .
docker run -v $(pwd):/app -p 8080:8080 -w /app newapp ./start.sh

我正在创造这样的东西:

FROM node:16

WORKDIR /app
COPY ["package.json", "package-lock.json*", "./"]
RUN npm install
COPY . .

但我最终得到了这个:

/usr/local/bin/docker-entrypoint.sh: 11: exec: ./run.sh: Permission denied

我也尝试将我的 sh 脚本放入脚本文件夹并添加

RUN chmod +x ./scripts/*

但是失败了

【问题讨论】:

  • 为什么你提议的docker run 命令会用绑定挂载覆盖镜像的/app 目录(所以你在Dockerfile 中所做的任何事情实际上都没有效果)?图像应该有一个CMD 来运行吗?
  • 不确定你的意思,但图像不应该有一个 cmd 来运行,因为在分配中用户正在运行docker run -v $(pwd):/app -p 8080:8080 -w /app newapp ./start.sh来运行 dockerfile 也是这个命令,他们正在更改文件主文件夹
  • 鉴于 docker run 命令,如果您使用未修改的节点图像 (docker run -v ... -p ... -w /app node:16 ./start.sh),我希望您会得到相同的结果。在此设置中使用 Docker 并没有太多好处
  • 我同意,但这只是一个任务

标签: bash docker dockerfile


【解决方案1】:

我设法将 Dockerfile 更改为:

FROM node:16

WORKDIR /app
COPY ["package.json", "package-lock.json*", "./"]
RUN npm install
COPY . .

RUN chmod +x ./scripts/*

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 2020-06-24
    相关资源
    最近更新 更多