在C程序中构建Docker映像

时间:2019-02-07 14:08:31

标签: c sockets docker

我正在通过套接字发送Dockerfile和.c文件。我在尝试着 使用以下命令在C程序中构建映像:

return this.get('apollo').mutate({
    mutation: createCollaborator,
    variables,
    update: (store, { data: { createCollaborator } }) => {
      const data = store.readQuery({ query })

      data.collaborators.push(createCollaborator);

      store.writeQuery({ query, data });
    }
  }, createCollaborator');

但是当它开始构建图像时,我得到以下输出:

system("docker build -t my_image .")

直接在cmd中构建时,一切正常。我正在运行C 使用Step 1/6 : FROM gcc:4.9 ---> 1b3de68a7ff8 Step 2/6 : COPY . /home/server/src ---> 3ad55a5751dd Step 3/6 : WORKDIR /home/server/src ---> Running in 8d768eda43ee Removing intermediate container 8d768eda43ee ---> bf9a9ff0273b Step 4/6 : EXPOSE 9000 ---> Running in 75c48b8aa200 Removing intermediate container 75c48b8aa200 ---> b38c514453e0 Step 5/6 : RUN gcc ./rand_gen_server.c -o server_side ---> Running in b4486ecd8451 /usr/lib/x86_64-linux-gnu/crt1.o: In function `_start': (.text+0x20): undefined reference to `main' collect2: error: ld returned 1 exit status The command '/bin/sh -c gcc ./rand_gen_server.c -o server_side' returned a non-zero code: 1 进行编程。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

@ForceBru和@Rudi的组合对我有帮助。由于Dockerfile是从套接字获取的,因此我不得不将COPYWORKDIR路径替换为与新主机相对应的路径。

我也将步骤5/6更改为gcc -c /rand_gen_server.c -o server_side

让我们看看其余的努力是否会奏效。

更新 事实证明,在编译期间,我无法编译另一个.c文件。为此,我必须创建一个新过程。使用功能fork()并执行系统调用以构建docker镜像即可完成工作。另外,我在编译过程中没有使用-c选项。