我在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仍与上述相同。我如何给他们自己的道路。因为现在我得到一个错误,找不到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'
最佳答案
请仔细查看以下命令:
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'
关于gcc - 在docker gcc和java中制作2个卷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29204063/