在 docker gcc 和 java 中制作 2 卷

Make 2 volumes in docker gcc and java

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

因为您首先 cd mycode 然后 cd tst 在同一个 shell 内,您正在尝试 cd mycode/tst,而您的坐骑位于 /tst .

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

改为:

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