在docker gcc和java中创build两个卷

我在gcc容器中设置了一个docker卷。 我需要编译代码,并通过文本文件给它一些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保持在上述相同的文件夹。 我如何给他们自己的path。 因为现在我得到一个错误,test.txt没有find,当然它不会。 我试着为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' 

仔细看看这个命令:

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

因为你先cd mycode然后cd tst在同一个shell里面,你试图cd mycode/tst ,而mount在/tst

同样, myapp/mycode ,而不是在tst ,所以你不能在tst目录下运行./myapp ,并期望它能够正常工作。

代替:

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