在docker gcc和java中创建2个卷

时间:2015-03-23 06:00:01

标签: gcc docker

我在gcc容器中设置了泊坞窗卷。我需要编译代码并通过文本文件给它一些stdin。我可以使用以下命令执行此操作。

docker run \
  -v /home/usr/workspace/proj/WebContent/files:/mycode \
  gcc:4.9 \
  sh -c 'cd mycode; gcc -o myapp ./mycode.c; ./myapp < ./test.txt'

现在我的问题是,我需要为每个用户使用他们的用户名创建一个单独的文件夹,但text.txt保留在与上面相同的文件夹中。我如何给他们自己的路径。因为现在我得到一个错误,找不到test.txt,当然它不会。我尝试为test.txt制作一个单独的卷,但我想在一个容器中制作两个卷是不可能的,或者我做错了。

我尝试了什么(请不要判断,我只是在学习:P)

docker run \
  -v /home/usr/workspace/proj/WebContent/file/username:/mycode \
  -v /home/usr/workspace/proj/WebContent/file/:/tst  \
  gcc:4.9 \
  sh -c 'cd mycode; gcc -o myapp ./mycode.c; cd tst; ./myapp < ./test.txt'

1 个答案:

答案 0 :(得分:2)

仔细查看此命令:

sh -c 'cd mycode; gcc -o myapp ./mycode.c; cd tst; ./myapp < ./test.txt'

因为您在同一个shell中首先cd mycode然后cd tst,所以您正在尝试cd mycode/tst,而您的坐标位于/tst

同样,myapp位于/mycode,而不是tst,因此您无法在./myapp目录中运行tst并期望它工作。

相反:

sh -xc 'cd /mycode && gcc -o myapp ./mycode.c && cd /tst && /mycode/myapp < ./test.txt'