docker - 我对docker的travis-ci yml似乎有点冗长-我使用的docker运行不正确吗?

标签 docker travis-ci

我已经准备好在这里进行一些严重的拖钓,但是我不确定还有什么地方可以找。如果您想帮助我,谢谢,否则,将向您提供更好的答案来源表示感谢。
我有一个.yml文件可在Travis-CI上使用,并且正在使用自定义docker镜像。我已将下面的文件包括在内,不禁感觉到我正在努力进行。欢迎提出所有建议。

sudo: required

language: c

services:
    - docker

before_install:
    - docker pull kaixhin/cuda
    - docker run --name="cuda_7.5" kaixhin/cuda /bin/sh -c "sudo apt-get update"
    - docker commit cuda_7.5 kaixhin/cuda:latest
    - docker rm cuda_7.5 
    - docker run --name="cuda_7.5" kaixhin/cuda /bin/sh -c "sudo apt-get install -y cmake"
    - docker commit cuda_7.5 kaixhin/cuda:latest
    - docker rm cuda_7.5
    - mkdir  /home/travis/build/inJeans/cuda_dsmc/build

script:
    - docker run -v=/home/travis/build/inJeans/cuda_dsmc:/cuda_dsmc --name="cuda_7.5" kaixhin/cuda /bin/sh -c "cd /cuda_dsmc/build; cmake .."
    - docker commit cuda_7.5 kaixhin/cuda:latest
    - docker rm cuda_7.5
    - docker run -v=/home/travis/build/inJeans/cuda_dsmc:/cuda_dsmc --name="cuda_7.5" kaixhin/cuda /bin/sh -c "cd /cuda_dsmc/build; make" 
    - docker commit cuda_7.5 kaixhin/cuda:latest
    - docker rm cuda_7.5
    - docker run -v=/home/travis/build/inJeans/cuda_dsmc:/cuda_dsmc --name="cuda_7.5" kaixhin/cuda /bin/sh -c "cd /cuda_dsmc/build; make test" 
    - docker commit cuda_7.5 kaixhin/cuda:latest
    - docker rm cuda_7.5

我正在对Docker容器外部的本地目录进行更改,并且我希望这些更改能够保留下来,这就是为什么我不断提交的原因。

最佳答案

这不是Dockerfile,而是travis-ci配置文件。

我尚未对此进行测试,但是如果您想将before_installscript合并为单个Dockerfile,则可能看起来像这样。

FROM kaixhin/cuda
RUN /bin/sh -c "sudo apt-get update \
    && sudo apt-get install -y cmake" \
RUN mkdir -p /cuda_dsmc/build \
    && curl -SL http://path.to.your/code.tgz \
    | tar -xJC /cuda_dsmc \
    && /cuda_dsmc/build
    && cmake .. \
    && build \ 
    && make \
    && make test

使用Docker Hub的自动构建,您可以拥有一个自定义镜像,其中的代码随时可以在travis-ci中进行提取和测试。

进一步阅读:
  • Dockerfile最佳实践:http://docs.docker.com/articles/dockerfile_best-practices
  • Docker Hub自动构建:http://docs.docker.com/userguide/dockerrepos/#automated-builds
  • 关于docker - 我对docker的travis-ci yml似乎有点冗长-我使用的docker运行不正确吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32880317/

    相关文章:

    git - 如何以持久退出 0 状态进行 git 提交?

    mysql - 连接到在 Docker 容器上运行的 mysql

    visual-studio - 在 VS2019 中将 ASP.NET Core Docker 镜像从 x86 部署到 ARM(Raspberry Pi)

    r - 在 travis 上进行测试期间使用 load() 从 .RData 文件加载数据

    github - 有条件地触发 TravisCI 构建阶段?

    java - 工作服不适用于 Travis

    docker - Docker 容器中的 DNS 服务器

    java - 如何从 Java 项目运行 Docker 容器?

    git - 如何使用 Docker 中的部署 key 从 Github 部署代码?

    r - 将 Travis.ci 与 R 结合使用