Нещодавно стикнувся з багом коли мої 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
Коментувати