mirror of
https://github.com/docker/compose.git
synced 2025-07-24 22:24:41 +02:00
commit
4038169d96
27
CHANGELOG.md
27
CHANGELOG.md
@ -1,12 +1,18 @@
|
|||||||
Change log
|
Change log
|
||||||
==========
|
==========
|
||||||
|
|
||||||
1.25.0-rc4 (2019-10-28)
|
1.25.0 (2019-11-18)
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
- Add BuildKit support, use `DOCKER_BUILDKIT=1` and `COMPOSE_NATIVE_BUILDER=1`
|
- Set no-colors to true if CLICOLOR env variable is set to 0
|
||||||
|
|
||||||
|
- Add working dir, config files and env file in service labels
|
||||||
|
|
||||||
|
- Add dependencies for ARM build
|
||||||
|
|
||||||
|
- Add BuildKit support, use `DOCKER_BUILDKIT=1` and `COMPOSE_DOCKER_CLI_BUILD=1`
|
||||||
|
|
||||||
- Bump paramiko to 2.6.0
|
- Bump paramiko to 2.6.0
|
||||||
|
|
||||||
@ -54,6 +60,14 @@ Change log
|
|||||||
|
|
||||||
### Bugfixes
|
### Bugfixes
|
||||||
|
|
||||||
|
- Make container service color deterministic, remove red from chosen colors
|
||||||
|
|
||||||
|
- Fix non ascii chars error. Python2 only
|
||||||
|
|
||||||
|
- Format image size as decimal to be align with Docker CLI
|
||||||
|
|
||||||
|
- Use Python Posix support to get tty size
|
||||||
|
|
||||||
- Fix same file 'extends' optimization
|
- Fix same file 'extends' optimization
|
||||||
|
|
||||||
- Use python POSIX support to get tty size
|
- Use python POSIX support to get tty size
|
||||||
@ -76,7 +90,7 @@ Change log
|
|||||||
|
|
||||||
- Fixed race condition after pulling image
|
- Fixed race condition after pulling image
|
||||||
|
|
||||||
- Fixed error on duplicate mount points.
|
- Fixed error on duplicate mount points
|
||||||
|
|
||||||
- Fixed merge on networks section
|
- Fixed merge on networks section
|
||||||
|
|
||||||
@ -84,6 +98,13 @@ Change log
|
|||||||
|
|
||||||
- Fixed the presentation of failed services on 'docker-compose start' when containers are not available
|
- Fixed the presentation of failed services on 'docker-compose start' when containers are not available
|
||||||
|
|
||||||
|
1.24.1 (2019-06-24)
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
|
||||||
|
- Fixed acceptance tests
|
||||||
|
|
||||||
1.24.0 (2019-03-28)
|
1.24.0 (2019-03-28)
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ see [the list of features](https://github.com/docker/docker.github.io/blob/maste
|
|||||||
|
|
||||||
Compose is great for development, testing, and staging environments, as well as
|
Compose is great for development, testing, and staging environments, as well as
|
||||||
CI workflows. You can learn more about each case in
|
CI workflows. You can learn more about each case in
|
||||||
[Common Use Cases](https://github.com/docker/docker.github.io/blob/master/compose/overview.md#common-use-cases).
|
[Common Use Cases](https://github.com/docker/docker.github.io/blob/master/compose/index.md#common-use-cases).
|
||||||
|
|
||||||
Using Compose is basically a three-step process.
|
Using Compose is basically a three-step process.
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
from __future__ import absolute_import
|
from __future__ import absolute_import
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
__version__ = '1.25.0-rc4'
|
__version__ = '1.25.0'
|
||||||
|
@ -41,9 +41,9 @@ for (name, code) in get_pairs():
|
|||||||
|
|
||||||
|
|
||||||
def rainbow():
|
def rainbow():
|
||||||
cs = ['cyan', 'yellow', 'green', 'magenta', 'red', 'blue',
|
cs = ['cyan', 'yellow', 'green', 'magenta', 'blue',
|
||||||
'intense_cyan', 'intense_yellow', 'intense_green',
|
'intense_cyan', 'intense_yellow', 'intense_green',
|
||||||
'intense_magenta', 'intense_red', 'intense_blue']
|
'intense_magenta', 'intense_blue']
|
||||||
|
|
||||||
for c in cs:
|
for c in cs:
|
||||||
yield globals()[c]
|
yield globals()[c]
|
||||||
|
@ -134,7 +134,10 @@ def build_thread(container, presenter, queue, log_args):
|
|||||||
def build_thread_map(initial_containers, presenters, thread_args):
|
def build_thread_map(initial_containers, presenters, thread_args):
|
||||||
return {
|
return {
|
||||||
container.id: build_thread(container, next(presenters), *thread_args)
|
container.id: build_thread(container, next(presenters), *thread_args)
|
||||||
for container in initial_containers
|
# Container order is unspecified, so they are sorted by name in order to make
|
||||||
|
# container:presenter (log color) assignment deterministic when given a list of containers
|
||||||
|
# with the same names.
|
||||||
|
for container in sorted(initial_containers, key=lambda c: c.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@ import contextlib
|
|||||||
import functools
|
import functools
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
|
import os
|
||||||
import pipes
|
import pipes
|
||||||
import re
|
import re
|
||||||
import subprocess
|
import subprocess
|
||||||
@ -102,9 +103,9 @@ def dispatch():
|
|||||||
options, handler, command_options = dispatcher.parse(sys.argv[1:])
|
options, handler, command_options = dispatcher.parse(sys.argv[1:])
|
||||||
setup_console_handler(console_handler,
|
setup_console_handler(console_handler,
|
||||||
options.get('--verbose'),
|
options.get('--verbose'),
|
||||||
options.get('--no-ansi'),
|
set_no_color_if_clicolor(options.get('--no-ansi')),
|
||||||
options.get("--log-level"))
|
options.get("--log-level"))
|
||||||
setup_parallel_logger(options.get('--no-ansi'))
|
setup_parallel_logger(set_no_color_if_clicolor(options.get('--no-ansi')))
|
||||||
if options.get('--no-ansi'):
|
if options.get('--no-ansi'):
|
||||||
command_options['--no-color'] = True
|
command_options['--no-color'] = True
|
||||||
return functools.partial(perform_command, options, handler, command_options)
|
return functools.partial(perform_command, options, handler, command_options)
|
||||||
@ -666,7 +667,7 @@ class TopLevelCommand(object):
|
|||||||
log_printer_from_project(
|
log_printer_from_project(
|
||||||
self.project,
|
self.project,
|
||||||
containers,
|
containers,
|
||||||
options['--no-color'],
|
set_no_color_if_clicolor(options['--no-color']),
|
||||||
log_args,
|
log_args,
|
||||||
event_stream=self.project.events(service_names=options['SERVICE'])).run()
|
event_stream=self.project.events(service_names=options['SERVICE'])).run()
|
||||||
|
|
||||||
@ -1124,7 +1125,7 @@ class TopLevelCommand(object):
|
|||||||
log_printer = log_printer_from_project(
|
log_printer = log_printer_from_project(
|
||||||
self.project,
|
self.project,
|
||||||
attached_containers,
|
attached_containers,
|
||||||
options['--no-color'],
|
set_no_color_if_clicolor(options['--no-color']),
|
||||||
{'follow': True},
|
{'follow': True},
|
||||||
cascade_stop,
|
cascade_stop,
|
||||||
event_stream=self.project.events(service_names=service_names))
|
event_stream=self.project.events(service_names=service_names))
|
||||||
@ -1602,3 +1603,7 @@ def warn_for_swarm_mode(client):
|
|||||||
"To deploy your application across the swarm, "
|
"To deploy your application across the swarm, "
|
||||||
"use `docker stack deploy`.\n"
|
"use `docker stack deploy`.\n"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def set_no_color_if_clicolor(no_color_flag):
|
||||||
|
return no_color_flag or os.environ.get('CLICOLOR') == "0"
|
||||||
|
@ -1806,6 +1806,9 @@ class _CLIBuilder(object):
|
|||||||
line = p.stdout.readline()
|
line = p.stdout.readline()
|
||||||
if not line:
|
if not line:
|
||||||
break
|
break
|
||||||
|
# Fix non ascii chars on Python2. To remove when #6890 is complete.
|
||||||
|
if six.PY2:
|
||||||
|
magic_word = str(magic_word)
|
||||||
if line.startswith(magic_word):
|
if line.startswith(magic_word):
|
||||||
appear = True
|
appear = True
|
||||||
yield json.dumps({"stream": line})
|
yield json.dumps({"stream": line})
|
||||||
|
@ -204,7 +204,8 @@ def resume(args):
|
|||||||
gh_release = create_release_draft(repository, args.release, pr_data, files)
|
gh_release = create_release_draft(repository, args.release, pr_data, files)
|
||||||
delete_assets(gh_release)
|
delete_assets(gh_release)
|
||||||
upload_assets(gh_release, files)
|
upload_assets(gh_release, files)
|
||||||
img_manager = ImageManager(args.release)
|
tag_as_latest = is_tag_latest(args.release)
|
||||||
|
img_manager = ImageManager(args.release, tag_as_latest)
|
||||||
img_manager.build_images(repository)
|
img_manager.build_images(repository)
|
||||||
except ScriptError as e:
|
except ScriptError as e:
|
||||||
print(e)
|
print(e)
|
||||||
@ -244,7 +245,8 @@ def start(args):
|
|||||||
files = downloader.download_all(args.release)
|
files = downloader.download_all(args.release)
|
||||||
gh_release = create_release_draft(repository, args.release, pr_data, files)
|
gh_release = create_release_draft(repository, args.release, pr_data, files)
|
||||||
upload_assets(gh_release, files)
|
upload_assets(gh_release, files)
|
||||||
img_manager = ImageManager(args.release)
|
tag_as_latest = is_tag_latest(args.release)
|
||||||
|
img_manager = ImageManager(args.release, tag_as_latest)
|
||||||
img_manager.build_images(repository)
|
img_manager.build_images(repository)
|
||||||
except ScriptError as e:
|
except ScriptError as e:
|
||||||
print(e)
|
print(e)
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
VERSION="1.25.0-rc4"
|
VERSION="1.25.0"
|
||||||
IMAGE="docker/compose:$VERSION"
|
IMAGE="docker/compose:$VERSION"
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user