nazarpc
@nazarpc
Open Source enthusiast

Странная ошибка при сборке Docker контейнера (Bash)?

Есть в Dockerfile строчка:

[[ $MYSQL_PASSWORD ]] || MYSQL_PASSWORD=`pwgen -s 20 1` && \

В моей системе (Ubuntu 15.04 x64) работает как положено, а вот при сборке контейнера вываливается:

/bin/sh: 1: [[: not found

Есть идеи почему так может получиться? Вроде Bash синтаксис везде должен быть одинаковым.
  • Вопрос задан
  • 2891 просмотр
Решения вопроса 2
@Z-r
На большинстве систем /bin/sh — это не ГНУ Баш (/bin/bash). И в Убунте тоже — там sh — это Debian ASH, который [[ не умеет.
Ответ написан
Комментировать
MintTea
@MintTea
Z-r верно говорит. Чтобы работало, можете заменить свою конструкцию этим:
test ! -z "$MYSQL_PASSWORD" || MYSQL_PASSWORD=`pwgen -s 20 1` && \
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Wolf4ara
сисадмин и не более
Вообще, эта скобка - это отдельная утилита:
sam@debianmsk:~:26/01/15-09:05$ ls -l /usr/bin/[
-rwxr-xr-x 1 root root 35248 Янв 27  2013 /usr/bin/[


скорее всего в PATH этот путь не прописан в окружении скрипта
Проверить:
sam@debianmsk:~:26/01/15-09:06$ whereis [
[: /usr/bin/[ /usr/bin/X11/[ /usr/share/man/man1/[.1.gz
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы