Нет, они не делают. docker -compose command
всегда использует эквивалент формы Dockerfile exe c. Это можно легко увидеть с помощью быстрой демонстрации:
Dockerfile с shell обрабатывает символы оболочки форм:
FROM alpine:3.11.5
CMD echo foo && echo bar
$ docker run example
foo
bar
Dockerfile с exe c* Форма 1013 * не обрабатывает оболочку:
FROM alpine:3.11.5
CMD ["echo", "foo", "&&", "echo", "bar"]
$ docker run example
foo && echo bar
docker Первая команда формы -compose не выполняет обработку оболочки:
version: "3.7"
services:
example:
image: alpine:3.11.5
command: echo foo && echo bar
$ docker-compose up
Starting example_example_1 ... done
Attaching to example_example_1
example_1 | foo && echo bar
example_example_1 exited with code 0
И вторая форма команды docker -compose также не указана:
version: "3.7"
services:
example:
image: alpine:3.11.5
command: ["echo", "foo", "&&", "echo", "bar"]
$ docker-compose up
Starting example_example_1 ... done
Attaching to example_example_1
example_1 | foo && echo bar
example_example_1 exited with code 0
Итак, если вы хотите обработку оболочки в docker -compose он должен быть явно включен, передав команду sh -c
:
version: "3.7"
services:
example:
image: alpine:3.11.5
command: sh -c "echo foo && echo bar"
$ docker-compose up
Starting example_example_1 ... done
Attaching to example_example_1
example_1 | foo
example_1 | bar
example_example_1 exited with code 0