我使用docker-php和nginx + php-fpm(docker-compose项目)。当我试图从documentation:
运行示例时<?php
use Docker\API\Model\ContainersCreatePostBody;
use Docker\Docker;
$docker= Docker::create();
$containerConfig = new ContainersCreatePostBody();
$containerConfig->setImage('nginx:latest');
$containerConfig->setCmd(['echo', 'I am running a command']);
$containerCreateResult = $docker->containerCreate($containerConfig);
var_dump($containerCreateResult);
exit;
我收到了错误:
Http \ Client \ Socket \ Exception \ ConnectionException - Permission denied
据我所知,问题是php-fpm正在使用的用户组没有对docker.sock的rw权限(我是从运行docker的主机上安装它)。
搬运工-撰写:
shell目录包含yii2上的一个应用程序,由docker-php使用。
version: '2'
services:
web:
image: 'nginx:latest'
container_name: web
ports:
- '80:80'
- '443:443'
volumes:
- './:/shell'
networks:
- backend
- frontend
restart: always
php:
build: ./docker/php/
container_name: php
volumes:
- './:/shell'
- '/var/run/docker.sock:/var/run/docker.sock'
environment: []
networks:
- backend
restart: always
networks:
frontend:
driver: bridge
backend:
driver: bridge
用于php-fpm的Dockerfile:github gist(用于发布~100行的文件太大)
为实验安装了Docker,因此在容器php-fpm中没用。
软件版本:
我在互联网上发现了类似内容(one,two,three ...),决定是添加应用程序在容器中运行的用户,到集团www-data。
如果我将777权限分配给docker.sock,那么一切都会正常工作,但这是一个糟糕的解决办法=)