使用 Docker Compose 引用服务

ara*_*lar 5 docker docker-compose

我在从我的“主”( ) 服务调用某些 Docker Compose 服务中应该定义的内容时遇到问题web。我有以下docker-compose.yml文件:

version: '2'

services:
 db:
   image: postgres
   volumes:
    - postgres-db-volume:/data/postgres
 pdftk:
   image: mnuessler/pdftk
   volumes:
    - /tmp/manager:/work
 ffmpeg:
   image: jrottenberg/ffmpeg
   volumes:
    - /tmp/manager:/files
 web:
   build: .
   command: python manage.py runserver 0.0.0.0:8000
   volumes:
     - .:/code
     - /tmp/manager:/files
   ports:
     - "8000:8000"
   depends_on:
     - db
     - pdftk
     - ffmpeg

volumes:
   postgres-db-volume:
Run Code Online (Sandbox Code Playgroud)

我可以完美地使用dbfrom web,但不幸的是不能使用pdftkor (这些只是我运行shellffmpeg时未定义的命令行实用程序):web

manager$ docker-compose run web bash
Starting manager_ffmpeg_1
Starting manager_pdftk_1
root@16e4b755172d:/code# pdftk
bash: pdftk: command not found
root@16e4b755172d:/code# ffmpeg
bash: ffmpeg: command not found
Run Code Online (Sandbox Code Playgroud)

我如何获得pdftk并在服务ffmpeg中定义web?是depends_on不是合适的指令?我是否应该扩展web的 Dockerfile 来调用安装在其他两个服务中找到的内容的入口点脚本(尽管这似乎会适得其反)?

web尝试在添加pdftk和后删除并重建服务ffmpeg,但这并没有解决问题。

我能做些什么?

谢谢你!

opH*_*AME 0

看起来像是对“depends_on”的误解。它用于设置容器的启动顺序。

例如:在Web服务器之前启动数据库等。

如果您想访问安装在其他容器中的工具,则必须打开 ssh 连接,例如:

ssh pdftk <your command>
Run Code Online (Sandbox Code Playgroud)

但我会将 nessecary 工具安装到 Web 容器映像中。扩展 Dockerfile 以安装这两个工具应该可以解决问题。