在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'