我有一个带有基本ubuntu映像的docker容器。我使用以下命令启动它。
docker container run -it -d -v c:\Git\ENGINE_LIB_DIR:/ENGINE_LIB_DIR:ro --name ibuntu ubuntu
已安装的卷内部是一个Java JDK和一个如下所示的脚本:
#!/bin/bash
echo "export JAVA_HOME=/ENGINE_LIB_DIR/jdk/" >> ~/.bashrc;
echo "export PATH=${PATH}:/ENGINE_LIB_DIR/jdk/bin/" >> ~/.bashrc;
exec bash
因此,它基本上将已安装的java添加到路径中以使其可用。只要我从容器内的ubuntu bash执行该脚本,该脚本就可以工作。如果我尝试使用
docker exec -it ibuntu sh -c "sh /ENGINE_LIB_DIR/action.sh"
从容器外部它不会给出任何错误消息,而
docker exec -it ibuntu sh -c "java -version"
返回“ java:未找到”。因此,我怀疑脚本未正确执行。我尝试了绝对路径,只是没有“ sh -c”以及我通过googeling找到的其他方法。
我的目标是轻松使用docker容器内提供的java jdk来构建项目。我很乐意提供帮助。
编辑: 我尝试了@itachi的/ bin / bash -ic方法。它仍然说java:未找到,而shell调用返回了该错误:
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
sh: 0: Can't open ./ENGINE_LIB_DIR/action.sh
编辑2:
我设法将行为缩小到docker exec
命令。我使用docker container run -it -d -v c:\Git\ENGINE_LIB_DIR:/ENGINE_LIB_DIR:ro --entrypoint /ENGINE_LIB_DIR/action.sh --name ibuntu ubuntu /bin/bash
设置了容器。将Java路径变量附加到容器后可以正常工作,但是当我执行docker exec ibuntu sh -c "java -version"
时,它仍然显示sh: 1: java: not found
。我将不胜感激。