рдбреЙрдХрд░рдордзреАрд▓ рд╡рд╛рдкрд░рдХрд░реНрддрд╛

рдЖрдВрджреНрд░реЗ рдХреЛрдкрд┐рд▓реЛрд╡реНрд╣, рдЖрдордЪрд╛ CTO, рдбреЙрдХрд░рд▓рд╛ рдЖрд╡рдбрддреЛ, рд╕рдХреНрд░рд┐рдпрдкрдгреЗ рд╡рд╛рдкрд░рддреЛ рдЖрдгрд┐ рдкреНрд░реЛрддреНрд╕рд╛рд╣рди рджреЗрддреЛ. рдПрдХрд╛ рдирд╡реАрди рд▓реЗрдЦрд╛рдд, рддреЛ рдбреЙрдХрд░рдордзреНрдпреЗ рд╡рд╛рдкрд░рдХрд░реНрддреЗ рдХрд╕реЗ рддрдпрд╛рд░ рдХрд░рд╛рдпрдЪреЗ рддреЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рддреЛ. рддреНрдпрд╛рдВрдЪреНрдпрд╛рдмрд░реЛрдмрд░ рдпреЛрдЧреНрдп рдХрд╛рд░реНрдп рдХрд░рд╛, рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдирд╛ рдореВрд│ рдЕрдзрд┐рдХрд╛рд░ рдХрд╛ рд╕реЛрдбрд▓реЗ рдЬрд╛рдК рдирдпреЗрдд рдЖрдгрд┐ рдбреЙрдХрд░рдлрд╛рдЗрд▓рдордзреНрдпреЗ рдЬреБрд│рдд рдирд╕рд▓реЗрд▓реНрдпрд╛ рдирд┐рд░реНрджреЗрд╢рдХрд╛рдВрдЪреА рд╕рдорд╕реНрдпрд╛ рдХрд╢реА рд╕реЛрдбрд╡рд╛рдпрдЪреА.

рдХрдВрдЯреЗрдирд░рдордзреАрд▓ рд╕рд░реНрд╡ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд░реВрдЯ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдореНрд╣рдгреВрди рдЪрд╛рд▓рддреАрд▓, рдЬреЛрдкрд░реНрдпрдВрдд рддреБрдореНрд╣реА рддреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдд рдирд╛рд╣реА. рд╣реЗ рдЕрддрд┐рд╢рдп рд╕реЛрдпреАрдЪреЗ рд╡рд╛рдЯрддреЗ, рдХрд╛рд░рдг рдпрд╛ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд▓рд╛ рдХреЛрдгрддреЗрд╣реА рдкреНрд░рддрд┐рдмрдВрдз рдирд╛рд╣реАрдд. рдореНрд╣рдгреВрдирдЪ рд░реВрдЯ рдореНрд╣рдгреВрди рдХрд╛рдо рдХрд░рдгреЗ рд╕реБрд░рдХреНрд╖рд┐рддрддреЗрдЪреНрдпрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдирд╛рддреВрди рдЪреБрдХреАрдЪреЗ рдЖрд╣реЗ. рдЬрд░ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдпреЛрдЧреНрдп рдордирд╛рддреАрд▓ рдХреЛрдгреАрд╣реА рд╕реНрдерд╛рдирд┐рдХ рд╕рдВрдЧрдгрдХрд╛рд╡рд░ рд░реВрдЯ рдЕрдзрд┐рдХрд╛рд░рд╛рдВрд╕рд╣ рдХрд╛рдо рдХрд░рдд рдирд╕реЗрд▓, рддрд░ рдЕрдиреЗрдХ рдХрдВрдЯреЗрдирд░ рд░реВрдЯ рдЕрдВрддрд░реНрдЧрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЪрд╛рд▓рд╡рддрд╛рдд.

рдиреЗрд╣рдореА рдЕрд╕реЗ рдмрдЧ рдЕрд╕рддрд╛рдд рдЬреЗ рдорд╛рд▓рд╡реЗрдЕрд░рд▓рд╛ рдХрдВрдЯреЗрдирд░рдордзреВрди рдирд┐рд╕рдЯреВрди рд╣реЛрд╕реНрдЯ рд╕рдВрдЧрдгрдХрд╛рд╡рд░ рдЬрд╛рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддрд╛рдд. рд╕рд░реНрд╡рд╛рдд рд╡рд╛рдИрдЯ рдЧреГрд╣реАрдд рдзрд░реВрди, рдЖрдореНрд╣реА рд╣реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ рдХреА рдХрдВрдЯреЗрдирд░рдордзреАрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрд╢рд╛ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рджреНрд╡рд╛рд░реЗ рдЪрд╛рд▓рд╡рд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд рдЬреНрдпрд╛рдВрдЪреЗ рд╣реЛрд╕реНрдЯ рдорд╢реАрдирд╡рд░ рдХреЛрдгрддреЗрд╣реА рдЕрдзрд┐рдХрд╛рд░ рдирд╛рд╣реАрдд.

рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ

рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ рд╣реЗ рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдгрд╛рдордзреНрдпреЗ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рд╡реЗрдЧрд│реЗ рдирд╛рд╣реА. рддрдерд╛рдкрд┐, рднрд┐рдиреНрди рдмреЗрд╕ рдкреНрд░рддрд┐рдорд╛рдВрд╕рд╛рдареА рдЖрджреЗрд╢ рднрд┐рдиреНрди рдЕрд╕реВ рд╢рдХрддрд╛рдд.

рдбреЗрдмрд┐рдпрди-рдЖрдзрд╛рд░рд┐рдд рд╡рд┐рддрд░рдгрд╛рд╕рд╛рдареА, рддреБрдореНрд╣рд╛рд▓рд╛ рдбреЙрдХрд░рдлрд╛рдЗрд▓рдордзреНрдпреЗ рдЦрд╛рд▓реАрд▓ рдЬреЛрдбрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ:

RUN groupadd --gid 2000 node 
  && useradd --uid 2000 --gid node --shell /bin/bash --create-home node

рдЕрд▓реНрдкрд╛рдЗрди рд╕рд╛рдареА:

RUN addgroup -g 2000 node 
    && adduser -u 2000 -G node -s /bin/sh -D node

рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдХрдбреВрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЪрд╛рд▓реВ рдЖрд╣реЗ

UID 2000 рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдореНрд╣рдгреВрди рддреНрдпрд╛рдирдВрддрд░рдЪреНрдпрд╛ рд╕рд░реНрд╡ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА, рдЪрд╛рд▓рд╡рд╛:

USER 2000

рдиреЛрдб рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдореНрд╣рдгреВрди рдкреБрдвреАрд▓ рд╕рд░реНрд╡ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА, рдЪрд╛рд▓рд╡рд╛:

USER node

рдЕрдзрд┐рдХ рдордзреНрдпреЗ рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг.

рдЖрд░реЛрд╣рд┐рдд рдЦрдВрдб

рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рд╡реНрд╣реЙрд▓реНрдпреВрдо рдорд╛рдЙрдВрдЯ рдХрд░рддрд╛рдирд╛, рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд▓рд╛ рдлрд╛рдпрд▓реА рд╡рд╛рдЪрдгреНрдпрд╛рдЪреА рдЖрдгрд┐/рдХрд┐рдВрд╡рд╛ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рд╛. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдХрдВрдЯреЗрдирд░рдордзреАрд▓ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪрд╛ UID (GID) рдЖрдгрд┐ рдХрдВрдЯреЗрдирд░рдЪреНрдпрд╛ рдмрд╛рд╣реЗрд░реАрд▓ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪрд╛ рдЬреНрдпрд╛рд▓рд╛ рдлрд╛рдЗрд▓рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдпреЛрдЧреНрдп рдкрд░рд╡рд╛рдирдЧреНрдпрд╛ рдЖрд╣реЗрдд рддреЗ рдЬреБрд│рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗрдд. рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рд╡рд╛рдкрд░рдХрд░реНрддрд╛рдирд╛рд╡реЗ рдХрд╛рд╣реА рдлрд░рдХ рдкрдбрдд рдирд╛рд╣реАрдд.

рдЕрдиреЗрдХрджрд╛ рд▓рд┐рдирдХреНрд╕ рд╕рдВрдЧрдгрдХрд╛рд╡рд░, рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪрд╛ UID рдЖрдгрд┐ GID 1000 рдЪреНрдпрд╛ рдмрд░реЛрдмрд░реАрдЪрд╛ рдЕрд╕рддреЛ. рд╣реЗ рдЕрднрд┐рдЬреНрдЮрд╛рдкрдХ рд╕рдВрдЧрдгрдХрд╛рдЪреНрдпрд╛ рдкрд╣рд┐рд▓реНрдпрд╛ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд▓рд╛ рдирд┐рдпреБрдХреНрдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд.

рддреБрдордЪреЗ рдЕрднрд┐рдЬреНрдЮрд╛рдкрдХ рд╢реЛрдзрдгреЗ рд╕реЛрдкреЗ рдЖрд╣реЗ:

id

рддреБрдореНрд╣рд╛рд▓рд╛ рддреБрдордЪреНрдпрд╛ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдмрджреНрджрд▓ рд╕рд░реНрд╡рд╕рдорд╛рд╡реЗрд╢рдХ рдорд╛рд╣рд┐рддреА рдорд┐рд│реЗрд▓.
рддреБрдордЪреНрдпрд╛ рдУрд│рдЦрдХрд░реНрддреНрдпрд╛рд╕рд╣ рдЙрджрд╛рд╣рд░рдгрд╛рдВрдордзреВрди 2000 рдмрджрд▓рд╛ рдЖрдгрд┐ рд╕рд░реНрд╡рдХрд╛рд╣реА рдареАрдХ рд╣реЛрдИрд▓.

рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд▓рд╛ UID рдЖрдгрд┐ GID рдирд┐рдпреБрдХреНрдд рдХрд░рдгреЗ

рдЬрд░ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдкреВрд░реНрд╡реА рддрдпрд╛рд░ рдХреЗрд▓рд╛ рдЕрд╕реЗрд▓, рдкрд░рдВрддреБ рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрднрд┐рдЬреНрдЮрд╛рдкрдХ рдмрджрд▓рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕реЗрд▓, рддрд░ рддреБрдореНрд╣реА рд╣реЗ рдЕрд╕реЗ рдХрд░реВ рд╢рдХрддрд╛:

RUN usermod -u 1000 node 
  && groupmod -g 1000 node

рддреБрдореНрд╣реА рдЕрд▓реНрдкрд╛рдЗрди рдмреЗрд╕ рдЗрдореЗрдЬ рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣рд╛рд▓рд╛ рдЫрд╛рдпрд╛ рдкреЕрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ:

RUN apk add тАФno-cache shadow

рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХрд░рддрд╛рдирд╛ рдХрдВрдЯреЗрдирд░рдордзреНрдпреЗ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдЖрдпрдбреА рдкрд╛рд╕ рдХрд░рдгреЗ

рддреБрдордЪрд╛ рдЖрдпрдбреА рдЖрдгрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╡рд░ рдХрд╛рдо рдХрд░рдгрд╛рд▒реНрдпрд╛ рд╕рд░реНрд╡ рд▓реЛрдХрд╛рдВрдЪреЗ рдЖрдпрдбреА рдЬреБрд│рдд рдЕрд╕рддреАрд▓, рддрд░ рд╣рд╛ рдЖрдпрдбреА рдбреЙрдХрд░рдлрд╛рдЗрд▓рдордзреНрдпреЗ рдирдореВрдж рдХрд░рд╛. рдорд╛рддреНрд░, рдЕрдиреЗрдХрджрд╛ рдпреБрдЬрд░ рдЖрдпрдбреА рдЬреБрд│рдд рдирд╛рд╣реАрдд.

рддреБрдореНрд╣рд╛рд▓рд╛ рд╣рд╡реЗ рддреЗ рдХрд╕реЗ рдорд┐рд│рд╡рд╛рдпрдЪреЗ рддреЗ рд▓рдЧреЗрдЪ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдд рдирд╛рд╣реА. рдорд╛рдЭреНрдпрд╛рд╕рд╛рдареА, рдбреЙрдХрд░рд╡рд░ рдкреНрд░рднреБрддреНрд╡ рдорд┐рд│рд╡рдгреНрдпрд╛рдЪреНрдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрддреАрд▓ рд╣реА рд╕рд░реНрд╡рд╛рдд рдХрдареАрдг рдЧреЛрд╖реНрдЯ рд╣реЛрддреА. рдЕрдиреЗрдХ рдбреЙрдХрд░ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдирд╛ рд╣реЗ рд╕рдордЬрдд рдирд╛рд╣реА рдХреА рдкреНрд░рддрд┐рдореЗрдЪреНрдпрд╛ рдЬреАрд╡рдирд╛рдд рд╡реЗрдЧрд╡реЗрдЧрд│реЗ рдЯрдкреНрдкреЗ рдЕрд╕рддрд╛рдд. рдкреНрд░рдердо, рдкреНрд░рддрд┐рдорд╛ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рд╡рд╛рдкрд░реВрди рдПрдХрддреНрд░ рдХреЗрд▓реА рдЬрд╛рддреЗ. рдЗрдореЗрдЬрдордзреВрди рдХрдВрдЯреЗрдирд░ рдЪрд╛рд▓рд╡рддрд╛рдирд╛, рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдпрд╛рдкреБрдвреЗ рд╡рд╛рдкрд░рд▓реА рдЬрд╛рдд рдирд╛рд╣реА.

рдкреНрд░рддрд┐рдорд╛ рддрдпрд╛рд░ рдХреЗрд▓реНрдпрд╛рд╡рд░ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдирд┐рд░реНрдорд┐рддреА рд╣реЛрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЬреНрдпрд╛ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪреНрдпрд╛ рдЕрдВрддрд░реНрдЧрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реБрд░реВ рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд рддреЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╣реЗрдЪ рд▓рд╛рдЧреВ рд╣реЛрддреЗ. рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЕрд╕рд╛ рдХреА рдЖрдкрдг рдХрдВрдЯреЗрдирд░рдЪреНрдпрд╛ рдЖрдд UID (GID) рдкрд╛рд╕ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рдбреЙрдХрд░рдлрд╛рдЗрд▓рдордзреНрдпреЗ рдмрд╛рд╣реНрдп рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рдирд┐рд░реНрджреЗрд╢ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддрд╛рдд рдПрдирд╡реНрд╣реАрд╡реНрд╣реА ╨╕ ARG. рдирд┐рд░реНрджреЗрд╢рд╛рдВрдЪреА рддрдкрд╢реАрд▓рд╡рд╛рд░ рддреБрд▓рдирд╛ рдпреЗрдереЗ.

рдбреЙрдХрд░рдлрд╛рдЗрд▓

ARG UID=1000
ARG GID=1000
ENV UID=${UID}
ENV GID=${GID}
RUN usermod -u $UID node 
  && groupmod -g $GID node

рддреБрдореНрд╣реА рдпрд╛рдкреНрд░рдорд╛рдгреЗ рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрджреНрд╡рд╛рд░реЗ рдпреБрдХреНрддрд┐рд╡рд╛рдж рдкрд╛рд╕ рдХрд░реВ рд╢рдХрддрд╛:

рдбреЙрдХрд░-рдХрдВрдкреЛрдЬ

build:
  context: ./src/backend
  args:
    UID: 1000
    GID: 1000

PS рдбреЙрдХрд░рдЪреНрдпрд╛ рд╕рд░реНрд╡ рдЧреБрдВрддрд╛рдЧреБрдВрддрд╛рдВрд╡рд░ рдкреНрд░рднреБрддреНрд╡ рдорд┐рд│рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА, рдХрд╛рдЧрджрдкрддреНрд░реЗ рдХрд┐рдВрд╡рд╛ рд▓реЗрдЦ рд╡рд╛рдЪрдгреЗ рдкреБрд░реЗрд╕реЗ рдирд╛рд╣реА. рддреБрдореНрд╣рд╛рд▓рд╛ рдЦреВрдк рд╕рд░рд╛рд╡ рдХрд░рдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рдЖрд╣реЗ, рддреБрдореНрд╣рд╛рд▓рд╛ рдбреЙрдХрд░рдЪрд╛ рдЕрдиреБрднрд╡ рдШреНрдпрд╛рд╡рд╛ рд▓рд╛рдЧреЗрд▓.

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛