рдбреЙрдХрд░ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛

рдПрдВрдбреНрд░реА рдХреЛрдкрд┐рд▓реЛрд╡, рд╣рдорд╛рд░рд╛ рд╕реАрдЯреАрдУ, рдбреЙрдХрд░ рдХреЛ рдкреНрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрд╕реЗ рдмрдврд╝рд╛рд╡рд╛ рджреЗрддрд╛ рд╣реИред рдПрдХ рдирдП рд▓реЗрдЦ рдореЗрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдмрддрд╛рдпрд╛ рдХрд┐ рдбреЙрдХрд░ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреИрд╕реЗ рдмрдирд╛рдПрдВред рдЙрдирдХреЗ рд╕рд╛рде рд╕рд╣реА рдХрд╛рдо рдХрд░реЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд░реВрдЯ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХреНрдпреЛрдВ рдирд╣реАрдВ рдЫреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдбреЙрдХрд░рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмреЗрдореЗрд▓ рд╕рдВрдХреЗрддрдХреЛрдВ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПред

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

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

рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдирд╛

рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдирд╛ рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдг рдореЗрдВ рдЗрд╕реЗ рдмрдирд╛рдиреЗ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрдзрд╛рд░ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрджреЗрд╢ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдбреЗрдмрд┐рдпрди-рдЖрдзрд╛рд░рд┐рдд рд╡рд┐рддрд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдбреЙрдХрд░рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

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

рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдкреНрд░рд▓реЗрдЦрди.

рдмрдврд╝рддреЗ рд╡реЙрд▓реНрдпреВрдо

рдХрд┐рд╕реА рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рд╡реЙрд▓реНрдпреВрдо рдмрдврд╝рд╛рддреЗ рд╕рдордп, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдФрд░/рдпрд╛ рд▓рд┐рдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдХрдВрдЯреЗрдирд░ рдХреЗ рдмрд╛рд╣рд░ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдпреВрдЖрдИрдбреА (рдЬреАрдЖрдИрдбреА) рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдлрд╝рд╛рдЗрд▓ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЙрдЪрд┐рдд рдЕрдиреБрдорддрд┐ рд╣реИ, рдХрд╛ рдорд┐рд▓рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдХреЛрдИ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддреЗ.

рдЕрдХреНрд╕рд░ рд▓рд┐рдирдХреНрд╕ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдпреВрдЖрдИрдбреА рдФрд░ рдЬреАрдЖрдИрдбреА тАЛтАЛ1000 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддреА рд╣реИред рдпреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реМрдВрдкреЗ рдЬрд╛рддреЗ рд╣реИрдВред

рдЕрдкрдиреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИ:

id

рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡реНрдпрд╛рдкрдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧреАред
рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ 2000 рдХреЛ рдЕрдкрдиреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╕реЗ рдмрджрд▓реЗрдВ рдФрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдХрд┐рд╕реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ UID рдФрд░ GID рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛

рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рд▓реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

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

рдпрджрд┐ рдЖрдк рдЕрд▓реНрдкрд╛рдЗрди рдмреЗрд╕ рдЫрд╡рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЫрд╛рдпрд╛ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

RUN apk add тАФno-cache shadow

рдЫрд╡рд┐ рдмрдирд╛рддреЗ рд╕рдордп рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА рдкрд╛рд╕ рдХрд░рдирд╛

рдпрджрд┐ рдЖрдкрдХреА рдЖрдИрдбреА рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд▓реЛрдЧреЛрдВ рдХреА рдЖрдИрдбреА рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, рддреЛ рдмрд╕ рдЗрд╕ рдЖрдИрдбреА рдХреЛ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗред

рдЖрдк рдЬреЛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрд╕реЗ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдпрд╣ рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП, рдбреЙрдХрд░ рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдпрд╣ рд╕рдмрд╕реЗ рдХрдард┐рди рдХрд╛рдо рдерд╛ред рдХрдИ рдбреЙрдХрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдпрд╣ рдПрд╣рд╕рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдХ рдЫрд╡рд┐ рдХреЗ рдЬреАрд╡рди рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдЪрд░рдг рд╣реЛрддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЫрд╡рд┐ рдХреЛ Dockerfile рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрд┐рд╕реА рдЫрд╡рд┐ рд╕реЗ рдХрдВрдЯреЗрдирд░ рдЪрд▓рд╛рддреЗ рд╕рдордп, Dockerfile рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЫрд╡рд┐ рдирд┐рд░реНрдорд┐рдд рд╣реЛрдиреЗ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд┐рд░реНрдорд╛рдг рдЕрд╡рд╢реНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣реА рдмрд╛рдд рдЙрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд▓реЙрдиреНрдЪ рдХреА рдЬрд╛рддреА рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдХрдВрдЯреЗрдирд░ рдХреЗ рдЕрдВрджрд░ рдпреВрдЖрдИрдбреА (рдЬреАрдЖрдИрдбреА) рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

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

Dockerfile

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ