mirror of
https://github.com/docker/compose.git
synced 2025-07-20 12:14:41 +02:00
Merge pull request #1376 from aanand/fix-build-non-ascii-filename
Make sure the build path we pass to docker-py is a binary string
This commit is contained in:
commit
4bce388b51
@ -462,8 +462,10 @@ class Service(object):
|
|||||||
def build(self, no_cache=False):
|
def build(self, no_cache=False):
|
||||||
log.info('Building %s...' % self.name)
|
log.info('Building %s...' % self.name)
|
||||||
|
|
||||||
|
path = six.binary_type(self.options['build'])
|
||||||
|
|
||||||
build_output = self.client.build(
|
build_output = self.client.build(
|
||||||
self.options['build'],
|
path=path,
|
||||||
tag=self.full_name,
|
tag=self.full_name,
|
||||||
stream=True,
|
stream=True,
|
||||||
rm=True,
|
rm=True,
|
||||||
|
@ -4,6 +4,10 @@ import os
|
|||||||
from os import path
|
from os import path
|
||||||
import mock
|
import mock
|
||||||
|
|
||||||
|
import tempfile
|
||||||
|
import shutil
|
||||||
|
import six
|
||||||
|
|
||||||
from compose import Service
|
from compose import Service
|
||||||
from compose.service import (
|
from compose.service import (
|
||||||
CannotBeScaledError,
|
CannotBeScaledError,
|
||||||
@ -404,6 +408,29 @@ class ServiceTest(DockerClientTestCase):
|
|||||||
self.assertEqual(list(container['NetworkSettings']['Ports'].keys()), ['8000/tcp'])
|
self.assertEqual(list(container['NetworkSettings']['Ports'].keys()), ['8000/tcp'])
|
||||||
self.assertNotEqual(container['NetworkSettings']['Ports']['8000/tcp'][0]['HostPort'], '8000')
|
self.assertNotEqual(container['NetworkSettings']['Ports']['8000/tcp'][0]['HostPort'], '8000')
|
||||||
|
|
||||||
|
def test_build(self):
|
||||||
|
base_dir = tempfile.mkdtemp()
|
||||||
|
self.addCleanup(shutil.rmtree, base_dir)
|
||||||
|
|
||||||
|
with open(os.path.join(base_dir, 'Dockerfile'), 'w') as f:
|
||||||
|
f.write("FROM busybox\n")
|
||||||
|
|
||||||
|
self.create_service('web', build=base_dir).build()
|
||||||
|
self.assertEqual(len(self.client.images(name='composetest_web')), 1)
|
||||||
|
|
||||||
|
def test_build_non_ascii_filename(self):
|
||||||
|
base_dir = tempfile.mkdtemp()
|
||||||
|
self.addCleanup(shutil.rmtree, base_dir)
|
||||||
|
|
||||||
|
with open(os.path.join(base_dir, 'Dockerfile'), 'w') as f:
|
||||||
|
f.write("FROM busybox\n")
|
||||||
|
|
||||||
|
with open(os.path.join(base_dir, b'foo\xE2bar'), 'w') as f:
|
||||||
|
f.write("hello world\n")
|
||||||
|
|
||||||
|
self.create_service('web', build=six.text_type(base_dir)).build()
|
||||||
|
self.assertEqual(len(self.client.images(name='composetest_web')), 1)
|
||||||
|
|
||||||
def test_start_container_stays_unpriviliged(self):
|
def test_start_container_stays_unpriviliged(self):
|
||||||
service = self.create_service('web')
|
service = self.create_service('web')
|
||||||
container = create_and_start_container(service).inspect()
|
container = create_and_start_container(service).inspect()
|
||||||
|
@ -22,7 +22,8 @@ class DockerClientTestCase(unittest.TestCase):
|
|||||||
self.client.remove_image(i)
|
self.client.remove_image(i)
|
||||||
|
|
||||||
def create_service(self, name, **kwargs):
|
def create_service(self, name, **kwargs):
|
||||||
kwargs['image'] = kwargs.pop('image', 'busybox:latest')
|
if 'image' not in kwargs and 'build' not in kwargs:
|
||||||
|
kwargs['image'] = 'busybox:latest'
|
||||||
|
|
||||||
if 'command' not in kwargs:
|
if 'command' not in kwargs:
|
||||||
kwargs['command'] = ["/bin/sleep", "300"]
|
kwargs['command'] = ["/bin/sleep", "300"]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user