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