docker_logo.png

Нещодавно стикнувся з багом коли мої docker контейнери не білдились у MacOs. По-першу я подумав на проблема з shell скриптом, которий браз UID/GID поточного користувача. Але я перевірив його у MacOs у Virtualbox і все працювало.

Командо. в якій була помилка виявилась:

RUN echo "Creating user & group" \
  && groupadd -g "$GID" drupal \
  && useradd -r -u "$UID" -g "$GID" -m drupal

Ця команда має зв'язуваьт локального користувача і користувача в контейнері по UID:GID. За замовчуванням користувач у Linux має ідентифікатор UID GID які починають відлик з 1000. Але в MacOs інша ситуація. Там є групи з There are попередньо визначені групи для локальних користувачів іднетифікатори яких менше 1000.
Наприклад:

$ id
uid=501(currentuser) gid=20(staff) groups=20(staff),12(everyone),61(localaccounts),79(_appserverusr),80(admin),81(_appserveradm),98(_lpadmin),701(com.apple.sharepoint.group.1),33(_appstore),100(_lpoperator),204(_developer),250(_analyticsusers),395(com.apple.access_ftp),398(com.apple.access_screensharing),399(com.apple.access_ssh),400(com.apple.access_remote_ae)

В такому випадку ми будемо отримувати помилку при створенні групи яка вже існує в контейнері.
Маленький фікс полагодитить збій і створить новую групу якщо її ще немає:

RUN echo "Creating user & group" \
  && [ $(getent group "$GID") ] || groupadd -g "$GID" drupal \
  && useradd -r -u "$UID" -g "$GID" -m drupal

Коментувати

Вміст цього поля є приватним і не буде доступний широкому загалу.
  • Не дозволено жодних HTML теґів.
CAPTCHA
 oooo   ooooo         oooooooooo.     .o                            
`888 `888' `888' `Y8b o888
888 888 888 888 888 oooo ooo oooo oooo
888 888 888oooo888' 888 `88b..8P' `888 `888
888 888 888 `88b 888 Y888' 888 888
888 888 o 888 .88P 888 .o8"'88b 888 888
o888o o888ooooood8 o888bood8P' o888o o88' 888o `V88V"V8P'


Уведіть код, зображений у стилі Ascii-Арт.
Мета цього запитання — довести, що ви є реальним відвідувачем і запобігти автоматизованим розсиланням спаму.