mirror of
https://github.com/docker/compose.git
synced 2025-07-21 04:34:38 +02:00
Merge pull request #1388 from vdemeester/1303-log-driver-support
Add support for log-driver as a docker-compose.yml option
This commit is contained in:
commit
0f2f9db6d8
@ -24,6 +24,7 @@ DOCKER_CONFIG_KEYS = [
|
|||||||
'links',
|
'links',
|
||||||
'mem_limit',
|
'mem_limit',
|
||||||
'net',
|
'net',
|
||||||
|
'log_driver',
|
||||||
'pid',
|
'pid',
|
||||||
'ports',
|
'ports',
|
||||||
'privileged',
|
'privileged',
|
||||||
|
@ -83,6 +83,10 @@ class Container(object):
|
|||||||
def labels(self):
|
def labels(self):
|
||||||
return self.get('Config.Labels') or {}
|
return self.get('Config.Labels') or {}
|
||||||
|
|
||||||
|
@property
|
||||||
|
def log_config(self):
|
||||||
|
return self.get('HostConfig.LogConfig') or None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def human_readable_state(self):
|
def human_readable_state(self):
|
||||||
if self.is_running:
|
if self.is_running:
|
||||||
|
@ -8,7 +8,7 @@ import sys
|
|||||||
import six
|
import six
|
||||||
|
|
||||||
from docker.errors import APIError
|
from docker.errors import APIError
|
||||||
from docker.utils import create_host_config
|
from docker.utils import create_host_config, LogConfig
|
||||||
|
|
||||||
from .config import DOCKER_CONFIG_KEYS
|
from .config import DOCKER_CONFIG_KEYS
|
||||||
from .container import Container, get_container_name
|
from .container import Container, get_container_name
|
||||||
@ -26,6 +26,7 @@ DOCKER_START_KEYS = [
|
|||||||
'extra_hosts',
|
'extra_hosts',
|
||||||
'read_only',
|
'read_only',
|
||||||
'net',
|
'net',
|
||||||
|
'log_driver',
|
||||||
'pid',
|
'pid',
|
||||||
'privileged',
|
'privileged',
|
||||||
'restart',
|
'restart',
|
||||||
@ -430,6 +431,7 @@ class Service(object):
|
|||||||
privileged = options.get('privileged', False)
|
privileged = options.get('privileged', False)
|
||||||
cap_add = options.get('cap_add', None)
|
cap_add = options.get('cap_add', None)
|
||||||
cap_drop = options.get('cap_drop', None)
|
cap_drop = options.get('cap_drop', None)
|
||||||
|
log_config = LogConfig(type=options.get('log_driver', 'json-file'))
|
||||||
pid = options.get('pid', None)
|
pid = options.get('pid', None)
|
||||||
|
|
||||||
dns = options.get('dns', None)
|
dns = options.get('dns', None)
|
||||||
@ -457,6 +459,7 @@ class Service(object):
|
|||||||
restart_policy=restart,
|
restart_policy=restart,
|
||||||
cap_add=cap_add,
|
cap_add=cap_add,
|
||||||
cap_drop=cap_drop,
|
cap_drop=cap_drop,
|
||||||
|
log_config=log_config,
|
||||||
extra_hosts=extra_hosts,
|
extra_hosts=extra_hosts,
|
||||||
read_only=read_only,
|
read_only=read_only,
|
||||||
pid_mode=pid
|
pid_mode=pid
|
||||||
|
14
docs/yml.md
14
docs/yml.md
@ -271,6 +271,20 @@ labels:
|
|||||||
- "com.example.label-with-empty-value"
|
- "com.example.label-with-empty-value"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### log driver
|
||||||
|
|
||||||
|
Specify a logging driver for the service's containers, as with the ``--log-driver`` option for docker run ([documented here](http://docs.docker.com/reference/run/#logging-drivers-log-driver)).
|
||||||
|
|
||||||
|
Allowed values are currently ``json-file``, ``syslog`` and ``none``. The list will change over time as more drivers are added to the Docker engine.
|
||||||
|
|
||||||
|
The default value is json-file.
|
||||||
|
|
||||||
|
```
|
||||||
|
log_driver: "json-file"
|
||||||
|
log_driver: "syslog"
|
||||||
|
log_driver: "none"
|
||||||
|
```
|
||||||
|
|
||||||
### net
|
### net
|
||||||
|
|
||||||
Networking mode. Use the same values as the docker client `--net` parameter.
|
Networking mode. Use the same values as the docker client `--net` parameter.
|
||||||
|
@ -656,3 +656,21 @@ class ServiceTest(DockerClientTestCase):
|
|||||||
labels = create_and_start_container(service).labels.items()
|
labels = create_and_start_container(service).labels.items()
|
||||||
for name in labels_list:
|
for name in labels_list:
|
||||||
self.assertIn((name, ''), labels)
|
self.assertIn((name, ''), labels)
|
||||||
|
|
||||||
|
def test_log_drive_invalid(self):
|
||||||
|
service = self.create_service('web', log_driver='xxx')
|
||||||
|
self.assertRaises(ValueError, lambda: create_and_start_container(service))
|
||||||
|
|
||||||
|
def test_log_drive_empty_default_jsonfile(self):
|
||||||
|
service = self.create_service('web')
|
||||||
|
log_config = create_and_start_container(service).log_config
|
||||||
|
|
||||||
|
self.assertEqual('json-file', log_config['Type'])
|
||||||
|
self.assertFalse(log_config['Config'])
|
||||||
|
|
||||||
|
def test_log_drive_none(self):
|
||||||
|
service = self.create_service('web', log_driver='none')
|
||||||
|
log_config = create_and_start_container(service).log_config
|
||||||
|
|
||||||
|
self.assertEqual('none', log_config['Type'])
|
||||||
|
self.assertFalse(log_config['Config'])
|
||||||
|
Loading…
x
Reference in New Issue
Block a user