我在docker中使用docker来托管我的容器,因为它们在管道中工作.我从我的代码创建的容器被设置为具有将gcloud密钥传递给容器的卷.这在我的本地机器上完美运行,但在gitlab-runner上它没有正确链接.
从阅读来看,这似乎是因为它将主机链接到我的容器,而不是将dind主机链接到我的容器.
如何将dind内的目录链接到我的容器?
(还要忽略标记等任何小问题,这个ci文件在开发的早期阶段)
GitLab ci如下
image: docker:latest
services:
- docker:dind
variables:
DOCKER_DRIVER: overlay2
SPRING_PROFILES_ACTIVE: gitlab-ci
CONTAINER_TEST_IMAGE: registry.gitlab.com/fdsa
CONTAINER_RELEASE_IMAGE: registry.gitlab.com/asdf
stages:
- build_test_image
- deploy
.docker_login: &docker_login | # This is an anchor
docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com
build test image:
stage: build_test_image
script:
- *docker_login
- docker build -t $CONTAINER_TEST_IMAGE .
- docker push $CONTAINER_TEST_IMAGE
test run:
stage: deploy
script:
- *docker_login
- mkdir /key
- echo $GCP_SVC_KEY > /key/application_default_credentials.json
# BROKEN LINE HERE
- docker run …Run Code Online (Sandbox Code Playgroud) 我从以下代码的第二行收到段错误:
FILE *output = NULL;
output = fopen("./output2.txt", "w+");
Run Code Online (Sandbox Code Playgroud)
我不认为它是某种腐败的内存错误,因为当我将w +更改为r时.它运行时没有段错误.此外,它似乎在segfaults之前创建文件.
编辑:事实证明mrbatch是对的
我的所有代码供参考:
void writeFile(const char *header, int numRows, int numCols, int **grades, const char *outFile)
{
printf("writefile success\n");
int i, j;
FILE *output = NULL;
output = fopen("./output2.txt", "w+"); // ERROR HERE (I was wrong, keep reading)
printf("testestestsetsete\n\n\n"); //based off the commenters, this code
//IS reached but is never printed
fprintf(output, "%s", *header); //commenters stated error is here
//*header should be header
fprintf(output, "%d %d\n", numRows, numCols); //output the …Run Code Online (Sandbox Code Playgroud) 我试图找到一个简短的方法来编写它(在Java中)(注意在这种情况下top是链表中的Node)
if(top.data.equals("A") || top.data.equals("B") || top.data.equals("C") ||....)
postfix.push(pop());
Run Code Online (Sandbox Code Playgroud)
我的目标是这样的
if(top.data.equals("A", "B", "C", "D", ....)
Run Code Online (Sandbox Code Playgroud)
有没有办法在Java中这样做?(我甚至不知道在API和其他地方做什么进一步研究它).
谢谢你的帮助.