无人机(在Docker中组合Docker?)

时间:2019-03-21 18:24:11

标签: docker drone drone.io

我想做

docker-compose up -d

似乎plugins/docker可以执行我想要的操作,但是如果我未指定与发布相关的内容,它将失败。我想不发布就使用它。

另一种替代方法可能是服务,但我总是尝试失败

docs.drone.io/docker_dind中的代码

kind: pipeline
name: default

steps:
- name: test
  image: docker:dind
  volumes:
  - name: dockersock
    path: /var/run
  commands:
  - sleep 5 # give docker enough time to start
  - docker ps -a
  - docker-compose -v # new

services:
- name: docker
  image: docker:dind
  privileged: true
  volumes:
  - name: dockersock
    path: /var/run

volumes:
- name: dockersock
  temp: {}

错误:

/usr/drone/bin/init: line 23: docker-compose: not found

2 个答案:

答案 0 :(得分:1)

docker:dind容器似乎未安装“ docker-compose”。您可以尝试使用docker/compose:1.23.2容器。如果您打算使用主机docker资源(即图像,网络),则需要挂载docker socket文件。否则,您需要将带有docker-compose文件的目录安装到/code目录。

docker / compose image reference:https://hub.docker.com/r/docker/compose/

请参见下面的代码以供参考:

kind: pipeline
name: default

steps:
- name: test
  image: compose:1.23.2
  volumes:
  - name: docker_sock
    path: /var/run/docker.sock
  commands:
  - up -f /drone/src/docker-compose.yaml
volumes:
  - name: docker_sock
    host:
      path: /var/run/docker.sock

答案 1 :(得分:0)

您可以将此yml用于无人机运行docker compose:

- name: publish
  image: docker/compose:1.25.0-rc2-alpine
  commands:
    - docker-compose -f <docker compose filename>.yml up -d
  volumes:
    - name: dockersock
      path: /var/run/docker.sock
  depends_on:
    - build