๋ด ๊ธ ๋๊ธ์
์ด์ ์๋ฆฌ์ฆ ์์ฝ: ๋ ๋ช ์ ๊ฐ๋ฐ์๊ฐ ์ด๋ฐํ ๋ง๊ฐ ๊ธฐํ ๋ด์ Dockerfile์ ์์ฑํฉ๋๋ค. ๊ทธ ๊ณผ์ ์์ Igor Ivanovich ์์ ์ด ๊ทธ๋ค์๊ฒ ๋ค๊ฐ์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ Dockerfile์ด ๋๋ฌด ๋๋น ์ AI๊ฐ ์ฌ์ฅ๋ง๋น ์ง์ ์ ์ด๋ฅด๋ ์ต๋๋ค.
์ด์ ์ด Dockerfile์ ์ด๋ค ๋ฌธ์ ๊ฐ ์๋์ง ์์๋ด ์๋ค.
๊ทธ๋ ๊ฒ ์ผ์ฃผ์ผ์ด ์ง๋ฌ์ต๋๋ค.
Dev Petya๋ ์ปคํผ ํ ์์ ๋ง์๋ฉฐ ์๋น์์ Ops Igor Ivanovich๋ฅผ ๋ง๋ฉ๋๋ค.
๊ต์: Igor Ivanovich, ๋ง์ด ๋ฐ๋น ์? ์ฐ๋ฆฌ๊ฐ ์ด๋์ ์ค์๋ฅผ ํ๋์ง ์๊ณ ์ถ์ต๋๋ค.
AI: ์ข์ต๋๋ค. ํ์ฉ์ ๊ด์ฌ์ด ์๋ ๊ฐ๋ฐ์๋ฅผ ์์ฃผ ๋ง๋์ง ์์ต๋๋ค.
๋จผ์ ๋ช ๊ฐ์ง ์ฌํญ์ ๋์ํด ๋ณด๊ฒ ์ต๋๋ค.
- Docker ์ด๋ฐ์ฌ๋ก๊ธฐ: ํ๋์ ์ปจํ ์ด๋ - ํ๋์ ํ๋ก์ธ์ค.
- ์ฉ๊ธฐ๋ ์์์๋ก ์ข์ต๋๋ค.
- ์บ์์์ ๋ ๋ง์ด ๊ฐ์ ธ๊ฐ์๋ก ์ข์ต๋๋ค.
P: ํ๋์ ์ปจํ ์ด๋์ ํ๋์ ํ๋ก์ธ์ค๊ฐ ์์ด์ผ ํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
AI: Docker๋ ์ปจํ ์ด๋๋ฅผ ์์ํ ๋ pid 1๋ก ํ๋ก์ธ์ค ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํฉ๋๋ค. ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๋ฉด Docker๋ ์ปจํ ์ด๋๋ฅผ ๋ค์ ์์ํ๋ ค๊ณ ์๋ํฉ๋๋ค. ์ปจํ ์ด๋์์ ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์คํ ์ค์ด๊ฑฐ๋ ๊ธฐ๋ณธ ์ ํ๋ฆฌ์ผ์ด์ ์ด pid 1๋ก ์คํ๋๊ณ ์์ง ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๋ฉด Docker๋ ์ด์ ๋ํด ์์ง ๋ชปํฉ๋๋ค.
๋ ๊ถ๊ธํ ์ ์ด ์์ผ์๋ฉด Dockerfile์ ๋ณด์ฌ์ฃผ์ธ์.
๊ทธ๋ฆฌ๊ณ Petya๋ ๋ค์์ ๋ณด์ฌ์ฃผ์์ต๋๋ค.
FROM ubuntu:latest
# ะะพะฟะธััะตะผ ะธัั
ะพะดะฝัะน ะบะพะด
COPY ./ /app
WORKDIR /app
# ะะฑะฝะพะฒะปัะตะผ ัะฟะธัะพะบ ะฟะฐะบะตัะพะฒ
RUN apt-get update
# ะะฑะฝะพะฒะปัะตะผ ะฟะฐะบะตัั
RUN apt-get upgrade
# ะฃััะฐะฝะฐะฒะปะธะฒะฐะตะผ ะฝัะถะฝัะต ะฟะฐะบะตัั
RUN apt-get -y install libpq-dev imagemagick gsfonts ruby-full ssh supervisor
# ะฃััะฐะฝะฐะฒะปะธะฒะฐะตะผ bundler
RUN gem install bundler
# ะฃััะฐะฝะฐะฒะปะธะฒะฐะตะผ nodejs ะธัะฟะพะปัะทัะตััั ะดะปั ัะฑะพัะบะธ ััะฐัะธะบะธ
RUN curl -sL https://deb.nodesource.com/setup_9.x | sudo bash -
RUN apt-get install -y nodejs
# ะฃััะฐะฝะฐะฒะปะธะฒะฐะตะผ ะทะฐะฒะธัะธะผะพััะธ
RUN bundle install --without development test --path vendor/bundle
# ะงะธััะธะผ ะทะฐ ัะพะฑะพะน ะบััะธ
RUN rm -rf /usr/local/bundle/cache/*.gem
RUN apt-get clean
RUN rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
RUN rake assets:precompile
# ะะฐะฟััะบะฐะตะผ ัะบัะธะฟั, ะฟัะธ ััะฐััะต ะบะพะฝัะตะนะฝะตัะฐ, ะบะพัะพััะน ะทะฐะฟัััะธั ะฒัะต ะพััะฐะปัะฝะพะต.
CMD ["/app/init.sh"]
AI: ์, ์์๋๋ก ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ฒซ ๋ฒ์งธ ์ค๋ถํฐ ์์ํด ๋ณด๊ฒ ์ต๋๋ค.
FROM ubuntu:latest
ํ๊ทธ๋ฅผ ๊ฐ์ ธ๊ฐ์ธ์ latest
. ํ๊ทธ ์ฌ์ฉ latest
์์ธกํ ์ ์๋ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํฉ๋๋ค. ์ด๋ฏธ์ง ๊ด๋ฆฌ์๊ฐ ๋ค๋ฅธ ์ํํธ์จ์ด ๋ชฉ๋ก์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง์ ์ ๋ฒ์ ์ ๊ตฌ์ถํ๊ณ ์ด ์ด๋ฏธ์ง๊ฐ ์ต์ ํ๊ทธ๋ฅผ ์์ ํ๋ค๊ณ ์์ํด ๋ณด์ธ์. ๊ทธ๋ฆฌ๊ณ ์ปจํ
์ด๋๋ ๊ธฐ๊ปํด์ผ ๊ตฌ์ถ์ด ์ค๋จ๋๊ณ ์ต์
์ ๊ฒฝ์ฐ์๋ ์ด์ ์ ์กด์ฌํ์ง ์์๋ ๋ฒ๊ทธ๋ฅผ ๋ฐ๊ฒฌํ๊ฒ ๋ฉ๋๋ค.
๋ถํ์ํ ์ํํธ์จ์ด๊ฐ ๋ง์ด ํฌํจ๋ ๋ณธ๊ฒฉ์ ์ธ OS๋ก ์ด๋ฏธ์ง๋ฅผ ์ดฌ์ํ๋ฉด ์ปจํ ์ด๋์ ๋ณผ๋ฅจ์ด ๋ถํ๋ ค์ง๋๋ค. ์ํํธ์จ์ด๊ฐ ๋ง์์๋ก ํ์ ๊ณผ ์ทจ์ฝ์ ๋ ๋์ด๋ฉ๋๋ค.
๊ฒ๋ค๊ฐ ์ด๋ฏธ์ง๊ฐ ํด์๋ก ํธ์คํธ์ ๋ ์ง์คํธ๋ฆฌ์์ ๋ ๋ง์ ๊ณต๊ฐ์ ์ฐจ์งํ๊ฒ ๋ฉ๋๋ค. (์ด๋ฏธ์ง๋ฅผ ์ด๋๊ฐ์ ์ ์ฅํ์๋์?)
P: ๋ค, ๋ฌผ๋ก ์ด์ฃ . ๋ ์ง์คํธ๋ฆฌ๊ฐ ์์ผ๋ ์ง์ ์ค์ ํ์ธ์.
AI: ๊ทธ๋ผ ์ ๊ฐ ๋ฌด์จ ๋ง์ ํ๋ ๊ฑธ๊น์?.. ์ ๊ทธ๋ ๊ตฐ์. ๋ณผ๋ฅจ์ด... ๋คํธ์ํฌ ๋ถํ๋ ๋์ด๋๊ณ ์์ต๋๋ค. ๋จ์ผ ์ด๋ฏธ์ง์ ๊ฒฝ์ฐ ์ด๋ ๋์ ๋์ง ์์ง๋ง ์ง์์ ์ธ ๋น๋, ํ ์คํธ ๋ฐ ๋ฐฐํฌ๊ฐ ์์ผ๋ฉด ๋์ ๋๋๋ค. ๊ทธ๋ฆฌ๊ณ AWS์ God's ๋ชจ๋๊ฐ ์์ผ๋ฉด ์ฐ์ฃผ ์๊ธ๋ ๋ฐ๊ฒ ๋ฉ๋๋ค.
๋ฐ๋ผ์ ์ ํํ ๋ฒ์ ๊ณผ ์ต์ ์ํํธ์จ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฅ ์ ํฉํ ์ด๋ฏธ์ง๋ฅผ ์ ํํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค. FROM ruby:2.5.5-stretch
๊ต์: ์, ์๊ฒ ์ต๋๋ค. ์ฌ์ฉ ๊ฐ๋ฅํ ์ด๋ฏธ์ง๋ฅผ ์ด๋์ ์ด๋ป๊ฒ ๋ณผ ์ ์๋์? ๋์๊ฒ ํ์ํ ๊ฒ์ด ๋ฌด์์ธ์ง ์ด๋ป๊ฒ ์ ์ ์๋์?
AI: ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฏธ์ง๋ ๋ค์์์ ๊ฐ์ ธ์ต๋๋ค.
์ํ์ค ์ฐ๋งฅ์: ์ด๋ฏธ์ง๋ ์ต์ 5MB์ Linux ์ด๋ฏธ์ง๋ก ์์ง๋ฉ๋๋ค. ๋จ์ : ์์ฒด libc ๊ตฌํ์ผ๋ก ์ปดํ์ผ๋์ด ํ์ค ํจํค์ง๊ฐ ์๋ํ์ง ์์ต๋๋ค. ํ์ํ ํจํค์ง๋ฅผ ์ฐพ์ ์ค์นํ๋ ๋ฐ๋ ๋ง์ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค.
์ง์ฐ๊ณ : ๊ธฐ๋ณธ ์ด๋ฏธ์ง, ๋ค๋ฅธ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ๋ฐ ์ฌ์ฉ๋์ง ์์ต๋๋ค. ์ค๋น๋ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ฅผ ์คํํ๊ธฐ ์ํ ์ฉ๋๋ก๋ง ์ฌ์ฉ๋ฉ๋๋ค. GO ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ๊ฐ์ด ํ์ํ ๋ชจ๋ ๊ฒ์ ํฌํจํ๋ ๋ฐ์ด๋๋ฆฌ ์ ํ๋ฆฌ์ผ์ด์
์ ์คํํ๋ ๋ฐ ์ด์์ ์
๋๋ค.
Ubuntu ๋๋ Debian๊ณผ ๊ฐ์ ๋ชจ๋ OS๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ๊ธ์์, ์ค๋ช
ํ ํ์๋ ์์ ๊ฒ ๊ฐ์์.
AI: ์ด์ ๋ชจ๋ ์ถ๊ฐ ๊ธฐ๋ฅ์ ์ค์นํด์ผ ํฉ๋๋ค. ํจํค์ง๋ฅผ ๋ง๋ค๊ณ ์บ์๋ฅผ ์ง์๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐ๋ก ๋ฒ๋ฆด ์๋ ์์ด์ apt-get ์ ๊ทธ๋ ์ด๋. ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ ์ด๋ฏธ์ง์ ๊ณ ์ ํ๊ทธ์๋ ๋ถ๊ตฌํ๊ณ ๊ฐ ๋น๋๋ง๋ค ๋ค๋ฅธ ์ด๋ฏธ์ง๋ฅผ ์ป๊ฒ ๋ฉ๋๋ค. ์ด๋ฏธ์ง์ ํจํค์ง ์ ๋ฐ์ดํธ๋ ๊ด๋ฆฌ์์ ์์ ์ด๋ฉฐ ํ๊ทธ ๋ณ๊ฒฝ์ด ์๋ฐ๋ฉ๋๋ค.
P: ๋ค, ์๋ํด ๋ดค๋๋ฐ ๊ฒฐ๊ณผ๋ ์ด๋ ์ต๋๋ค.
WORKDIR /app
COPY ./ /app
RUN curl -sL https://deb.nodesource.com/setup_9.x | bash -
&& apt-get -y install libpq-dev imagemagick gsfonts ruby-full ssh supervisor nodejs
&& gem install bundler
&& bundle install --without development test --path vendor/bundle
RUN rm -rf /usr/local/bundle/cache/*.gem
&& apt-get clean
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
AI: ๋์์ง๋ ์์ง๋ง, ํด๊ฒฐํด์ผ ํ ๋ถ๋ถ๋ ์์ต๋๋ค. ๋ณด์ธ์, ์ฌ๊ธฐ ์ด ๋ช ๋ น์ด ์์ต๋๋ค:
RUN rm -rf /usr/local/bundle/cache/*.gem
&& apt-get clean
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
... ์ต์ข ์ด๋ฏธ์ง์์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ์ง ์๊ณ , ์ด ๋ฐ์ดํฐ ์์ด ์ถ๊ฐ ๋ ์ด์ด๋ง ์์ฑํฉ๋๋ค. ์ ํํ๊ฒ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
RUN curl -sL https://deb.nodesource.com/setup_9.x | bash -
&& apt-get -y install libpq-dev imagemagick gsfonts nodejs
&& gem install bundler
&& bundle install --without development test --path vendor/bundle
&& rm -rf /usr/local/bundle/cache/*.gem
&& apt-get clean
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ด ์ ๋ถ๋ ์๋๋๋ค. ๊ฑฐ๊ธฐ ๋ญ ๊ฐ๊ณ ์์ด, ๋ฃจ๋น? ๊ทธ๋ฌ๋ฉด ์ฒ์์ ์ ์ฒด ํ๋ก์ ํธ๋ฅผ ๋ณต์ฌํ ํ์๊ฐ ์์ต๋๋ค. Gemfile๊ณผ Gemfile.lock์ ๋ณต์ฌํ๋ ๊ฒ์ผ๋ก ์ถฉ๋ถํฉ๋๋ค.
์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ์์ค ๋ณ๊ฒฝ์ ๋ํด ๋ฒ๋ค ์ค์น๊ฐ ์คํ๋์ง ์๊ณ Gemfile ๋๋ Gemfile.lock์ด ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ์๋ง ์คํ๋ฉ๋๋ค.
npm, pip, Composer ๋ฐ ์ข ์์ฑ ๋ชฉ๋ก์ด ์๋ ํ์ผ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๊ธฐํ ์ข ์์ฑ ๊ด๋ฆฌ์๊ฐ ์๋ ๋ค๋ฅธ ์ธ์ด์์๋ ๋์ผํ ๋ฐฉ๋ฒ์ด ์๋ํฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก, ์ฒ์์ "ํ๋์ ์ปจํ
์ด๋ - ํ๋์ ํ๋ก์ธ์ค"๋ผ๋ Docker ์ด๋
์ ๋ํด ์ด์ผ๊ธฐํ๋ ๊ฒ์ ๊ธฐ์ตํ์๋์? ์ด๋ ๊ฐ๋
์๊ฐ ํ์ํ์ง ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๊ฐ์ ์ด์ ๋ก systemd๋ ์ค์นํ๋ฉด ์ ๋ฉ๋๋ค. ๋ณธ์ง์ ์ผ๋ก Docker ์์ฒด๋ ๊ฐ๋
์์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ์์์ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ ค๊ณ ํ๋ฉด ํ๋์ ๊ฐ๋
์ ํ๋ก์ธ์ค์์ ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์
์ ์คํํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
๋น๋ํ ๋ ๋จ์ผ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ ๋ค์ ๊ฐ ์ปจํ
์ด๋์์ ํ๋์ ํ๋ก์ธ์ค๊ฐ ์คํ๋๋๋ก ํ์ํ ์์ ์ปจํ
์ด๋๋ฅผ ์์ํฉ๋๋ค.
๊ทธ๋ฌ๋ ๋์ค์ ๋ ์์ธํ ์ค๋ช ํฉ๋๋ค.
P: ์ ๊ฒ ๊ฐ์์. ๋ฌด์จ ์ผ์ด ์ผ์ด๋๋์ง ๋ณด์ธ์:
FROM ruby:2.5.5-stretch
WORKDIR /app
COPY Gemfile* /app
RUN curl -sL https://deb.nodesource.com/setup_9.x | bash -
&& apt-get -y install libpq-dev imagemagick gsfonts nodejs
&& gem install bundler
&& bundle install --without development test --path vendor/bundle
&& rm -rf /usr/local/bundle/cache/*.gem
&& apt-get clean
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
COPY . /app
RUN rake assets:precompile
CMD ["bundleโ, โexecโ, โpassengerโ, โstart"]
์ปจํ ์ด๋๋ฅผ ์์ํ ๋ ๋ฐ๋ชฌ ์์์ ์ฌ์ ์ํ ์ ์๋์?
AI: ๋ค, ๋ง์ต๋๋ค. ๊ทธ๋ฐ๋ฐ CMD์ ENTRYPOINT๋ฅผ ๋ชจ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐจ์ด์ ์ด ๋ฌด์์ธ์ง ์์๋ด๋ ๊ฒ์ด ์์ ์
๋๋ค. Habrรฉ์๋ ์ด ์ฃผ์ ์ ๊ดํ ์ข์ ๊ธ์ด ์์ต๋๋ค.
๊ทธ๋ผ ๊ณ์ ์งํํ๊ฒ ์ต๋๋ค. ๋ ธ๋๋ฅผ ์ค์นํ๊ธฐ ์ํด ํ์ผ์ ๋ค์ด๋ก๋ํ์ง๋ง ํ์ํ ๋ด์ฉ์ด ํฌํจ๋๋ค๋ ๋ณด์ฅ์ ์์ต๋๋ค. ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
RUN curl -sL https://deb.nodesource.com/setup_9.x > setup_9.x
&& echo "958c9a95c4974c918dca773edf6d18b1d1a41434 setup_9.x" | sha1sum -c -
&& bash setup_9.x
&& rm -rf setup_9.x
&& apt-get -y install libpq-dev imagemagick gsfonts nodejs
&& gem install bundler
&& bundle install --without development test --path vendor/bundle
&& rm -rf /usr/local/bundle/cache/*.gem
&& apt-get clean
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
์ฒดํฌ์ฌ์ ์ฌ์ฉํ๋ฉด ์ฌ๋ฐ๋ฅธ ํ์ผ์ ๋ค์ด๋ก๋ํ๋์ง ํ์ธํ ์ ์์ต๋๋ค.
P: ํ์ง๋ง ํ์ผ์ด ๋ณ๊ฒฝ๋๋ฉด ๋น๋๊ฐ ์คํจํฉ๋๋ค.
AI: ๋ค, ๊ทธ๋ฆฌ๊ณ ์ด์ํ๊ฒ๋ ์ด๊ฒ๋ ์ฅ์ ์ด์์. ํ์ผ์ด ๋ณ๊ฒฝ๋์์์ ์ ์ ์์ผ๋ฉฐ ๊ฑฐ๊ธฐ์์ ๋ณ๊ฒฝ๋ ๋ด์ฉ์ ํ์ธํ ์ ์์ต๋๋ค. ๊ทธ๋ค์ ๋๋ฌํ ์ ์๋ ๋ชจ๋ ๊ฒ์ ์ญ์ ํ๊ฑฐ๋ ๋ฐฑ๋์ด๋ฅผ ์์ฑํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํ๋ค๋ ์ฌ์ค์ ์ ํ ๋ชจ๋ฆ ๋๋ค.
๊ต์: ๊ฐ์ฌํฉ๋๋ค. ์ต์ข Dockerfile์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
FROM ruby:2.5.5-stretch
WORKDIR /app
COPY Gemfile* /app
RUN curl -sL https://deb.nodesource.com/setup_9.x > setup_9.x
&& echo "958c9a95c4974c918dca773edf6d18b1d1a41434 setup_9.x" | sha1sum -c -
&& bash setup_9.x
&& rm -rf setup_9.x
&& apt-get -y install libpq-dev imagemagick gsfonts nodejs
&& gem install bundler
&& bundle install --without development test --path vendor/bundle
&& rm -rf /usr/local/bundle/cache/*.gem
&& apt-get clean
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
COPY . /app
RUN rake assets:precompile
CMD ["bundleโ, โexecโ, โpassengerโ, โstart"]
๊ต์: Igor Ivanovich๋, ๋์์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ด์ ๋ฌ๋ ค์ผ ํ ์๊ฐ์ ๋๋ค. ์ค๋์ 10๊ฐ์ ์ปค๋ฐ์ ๋ ํด์ผ ํฉ๋๋ค.
์ฑ๊ธํ ๋๋ฃ๋ฅผ ์์ ์ผ๋ก ๋ฉ์ถ๊ฒ ํ ์ด๊ณ ๋ฅด ์ด๋ฐ๋ ธ๋น์น๋ ์งํ ์ปคํผ๋ฅผ ํ ๋ชจ๊ธ ๋ง์ ๋ค. 99.9% SLA์ ๋ฒ๊ทธ ์๋ ์ฝ๋์ ๋ํด ๋ช ์ด ๋์ ์๊ฐํ ํ ๊ทธ๋ ์ง๋ฌธ์ ํฉ๋๋ค.
AI: ๋ก๊ทธ๋ ์ด๋์ ์ ์ฅํ๋์?
P: ๋ฌผ๋ก , Production.log์ ์์ต๋๋ค. ๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ๊ทธ๋ ์ต๋๋ค. ํ์ง๋ง SSH ์์ด ์ด๋ป๊ฒ ์ก์ธ์คํ ์ ์์ต๋๊น?
AI: ํ์ผ์ ๋จ๊ฒจ๋๋ฉด ์ด๋ฏธ ์๋ฃจ์ ์ด ๊ฐ๋ฐ๋ ๊ฒ์ ๋๋ค. docker exec ๋ช ๋ น์ ์ฌ์ฉํ๋ฉด ์ปจํ ์ด๋์ ๋ชจ๋ ๋ช ๋ น์ ์คํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ก๊ทธ์ ๋ํด cat์ ์คํํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด์ ๋ฅผ ์ด์ฉํด์ -๊ทธ๊ฒ bash(์ปจํ ์ด๋์ ์ค์น๋ ๊ฒฝ์ฐ)๋ฅผ ์คํํ๋ฉด ์ปจํ ์ด๋์ ๋ํ ๋ํํ ์ก์ธ์ค๊ฐ ์ ๊ณต๋ฉ๋๋ค.
ํ์ง๋ง ๋ก๊ทธ๋ฅผ ํ์ผ์ ์ ์ฅํ๋ฉด ์ ๋ฉ๋๋ค. ์ต์ํ ์ด๋ ์ปจํ ์ด๋์ ํต์ ํ ์ ์๋ ์ฆ๊ฐ๋ก ์ด์ด์ง๋ฉฐ ์๋ฌด๋ ๋ก๊ทธ๋ฅผ ํ์ ํ์ง ์์ต๋๋ค. ๋ชจ๋ ๋ก๊ทธ๋ stdout์ผ๋ก ์ ์ก๋์ด์ผ ํฉ๋๋ค. ๊ฑฐ๊ธฐ์์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ ๋ณผ ์ ์์ต๋๋ค ๋์ปค ๋ก๊ทธ.
P: Igor Ivanovich, ๋ก๊ทธ๋ฅผ ๋ง์ดํธ๋ ๋๋ ํฐ๋ฆฌ, ๋ฌผ๋ฆฌ์ ๋ ธ๋์ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ก ๋ฃ์ ์ ์์๊น์?
AI: ๋
ธ๋์ ๋์คํฌ์ ๋ก๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ์ ์์ง ์์ ๊ฒ์ด ์ข์ต๋๋ค. ๋ก๊ทธ๋ฅผ ํตํด์๋ ์ด ์์
์ ์ํํ ์ ์์ต๋๋ค. ๋จ, ์ํ์ ์ค์ ํ๋ ๊ฒ์ ์์ง ๋ง์ธ์.
๊ทธ๊ฒ ๋ค์ผ, ๋น์ ์ ๋ฌ๋ฆด ์ ์์ต๋๋ค.
๊ต์: Igor Ivanovich, ๋ฌด์์ ์ฝ์ด์ผ ํ ์ง ์กฐ์ธํด ์ฃผ์ค ์ ์๋์?
AI: ๋จผ์ ์ฝ์ด ๋ณด์ธ์.
๊ทธ๋ฆฌ๊ณ ์ธํด์ญ์ ํ๊ณ ์ถ๋ค๋ฉด ๋ค์์ผ๋ก ๊ฐ์ธ์.
์ถ์ฒ : habr.com