【发布时间】:2020-12-17 18:59:43
【问题描述】:
我使用的是默认映像,我的要求是在运行 docker-compose 文件时运行一些 Linux 命令。 os是redhat。这是我的 docker-compose 文件
version: '3.4'
services:
rstudio-package-manager:
image: 'rstudio/rstudio-package-manager:latest'
restart: always
volumes:
- '$PWD/rstudio-pm.gcfg:/etc/rstudio-pm/rstudio-pm.gcfg'
command: bash -c mkdir "/tmp/hello"
ports:
- '4242:4242'
这是错误:
rstudio-package-manager_1 | mkdir: missing operand
rstudio-package-manager_1 | Try 'mkdir --help' for more information.
任何帮助将不胜感激
编辑
容器启动后我必须运行一些命令。它也可以作为 bash 脚本添加。为此,我尝试了这个
version: '3.4'
services:
rstudio-package-manager:
privileged: true
image: 'rstudio/rstudio-package-manager:latest'
restart: always
environment:
- RSPM_LICENSE=1212323123123123
volumes:
- './rstudio-pm.gcfg:/etc/rstudio-pm/rstudio-pm.gcfg'
- './init.sh:/usr/local/bin/init.sh'
command:
- init.sh
ports:
- '4242:4242'
init.sh里面是这个
alias rspm='/opt/rstudio-pm/bin/rspm'
rspm create repo --name=prod-cran --description='Access CRAN packages'
rspm subscribe --repo=prod-cran --source=cran
这也没有用。谁能帮帮我?
【问题讨论】:
-
这听起来像是 XY 问题。你的目标是什么,你为什么要在你的新 docker 容器 inside 中创建一个目录?
-
请参阅编辑部分 :) @knittl
-
您需要在单独的容器中运行它,或者完全从 Docker 外部运行它。您放入 Compose
command:的任何内容都会运行而不是容器通常运行的进程。 -
你能把我重定向到一个例子吗?我是这个环境的新手。
-
@Siddharth 我已经写了另一个答案,它不会修改 docker-compose 文件中的
command,而是创建一个新图像。
标签: linux docker docker-compose dockerfile containers