为了账号安全,请及时绑定邮箱和手机立即绑定

在 docker 外调用 Docker 容器

在 docker 外调用 Docker 容器

PHP
汪汪一只猫 2022-07-29 16:12:57
我有一个在 Apache 下运行且没有 docker 的项目。但是,在这个项目中,我有一个 PDF 导出,我想在 docker 容器中调用它。你是怎样做的?这是我的docker-compose.yaml:version: "3.3"services:    php:        image: registry.gitlab.com/nodevo/keneo/php:latest        volumes:            - .:/srv:rw,cached            - ~/.ssh/id_rsa:/root/.ssh/id_rsa:ro            - ~/.composer:/tmp    browsershot:        image: ouranoshong/browsershot        links:          - chrome    chrome:        build: ./docker/chrome        cap_add:            - SYS_ADMIN        ports:            - '9223:9222'Browsershot 服务下载 PDF 并具有 node 和 npm。为此,它模拟了一个浏览器,所以我有一个 chrome 服务,但我不知道它是否是正确的方法。这两个命令在终端中工作:docker-compose run --rm browsershot node -vdocker-compose run --rm browsershot npm -v但是,Browsershot 需要可执行节点和 npm 的路径,这两个命令突然变成了上面的 2 个命令:/** * @param string $nodePath * @param string $npmPath */public function __construct(string $nodePath, string $npmPath){    $this->browserShot = new Browsershot();    $this->browserShot        ->setNodeBinary($nodePath)        ->setNpmBinary($npmPath)        ->showBackground()        ->setOption('fullPage', true)        ->setOption('args', ['--disable-web-security'])        ->emulateMedia('screen')    ;}变量$nodePathisdocker-compose run --rm browsershot node和变量$npmPathid docker-compose run --rm browsershot npm。此代码适用于我的本地机器中的可执行文件,例如/usr/local/bin/node和/usr/local/bin/npm。但是,当我使用 docker 命令启动导出时,出现此错误:HTTP 500 Internal Server ErrorExit Code: 1(General error)Working directory: /media/vdufour/DATA/Sites/keneo/publicOutput:================Error Output:================Couldn't connect to Docker daemon at http+docker://localhost - is it running?If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.Couldn't connect to Docker daemon at http+docker://localhost - is it running?If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.
查看完整描述

2 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

使用 docker-compose 时,我只是像这样“SSH”到容器的外壳中:

docker-compose exec php /bin/bash

php我的容器在哪里docker-compose.yml

请记住,对于您打开的每个终端窗口,您还需要运行以下命令来加载环境变量:

eval $(docker-machine env)

如果不这样做,您将收到Couldn't connect to Docker daemon消息。


查看完整回答
反对 回复 2022-07-29
?
手掌心

TA贡献1942条经验 获得超3个赞

尝试使用 bash 运行命令

docker-compose run --rm browsershot bash -c "npm && node && some_command..."


查看完整回答
反对 回复 2022-07-29
  • 2 回答
  • 0 关注
  • 170 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信