Compose: ํŠน์ • ํŒŒ์ผ ํ™•์žฅ์ž๋งŒ ๋งˆ์šดํŠธ

์— ๋งŒ๋“  2014๋…„ 07์›” 24์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: docker/compose

์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ volumes ์˜ fig.yml *.py ํŒŒ์ผ๋งŒ ๋งˆ์šดํŠธํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

ํŒŒ์ด์ฌ ํŒจํ‚ค์ง€๊ฐ€ ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งˆ์šดํŠธํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด Dockefile์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

FROM python:3

ADD . /code/
WORKDIR /code
RUN pip install -r requirements-testing.txt -e .

ENV LC_ALL C.UTF-8
ENV LANG C.UTF-8

๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ fig.yml ๊ฐ€ ์žˆ์„ ๋•Œ์ž…๋‹ˆ๋‹ค.

python:
  build: .
  volumes:
    - .:/code/

๋•Œ๋ฌธ์— ๊ทธ๊ฒƒ์€, ์ผ์„ ๋‚ด ํŒŒ์ด์ฌ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๊ณผ ํ•จ๊ป˜ ์„ค์น˜ CLI๋ฅผ ์‹คํ–‰ํ•˜๋ ค๊ณ ํ•˜์ง€ ์•Š๋Š” ์‹คํ–‰ pip install -e . ์•„๋ž˜์— ๋‚ด์žฅ ๋œ ํŒŒ์ด์ฌ ํŒจํ‚ค์ง€ ์ผ๋ถ€ ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ /code/ . ๊ทธ๋Ÿฐ ๋‹ค์Œ ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ ์œ„์— ๋กœ์ปฌ ์†Œ์Šค ์ฝ”๋“œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งˆ์šดํŠธํ•˜๋ฉด ํ•ด๋‹น ๋นŒ๋“œ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ œ๊ฑฐ๋˜๊ณ  ๋ช…๋ น์ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

$ fig run python dc-campaign-finance-scraper
Traceback (most recent call last):
  File "/usr/local/bin/dc-campaign-finance-scraper", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/usr/local/lib/python3.4/site-packages/pkg_resources.py", line 2697, in <module>
    working_set.require(__requires__)
  File "/usr/local/lib/python3.4/site-packages/pkg_resources.py", line 669, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/usr/local/lib/python3.4/site-packages/pkg_resources.py", line 572, in resolve
    raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: dc-campaign-finance-scraper==0.5.1

๋”ฐ๋ผ์„œ .py ํŒŒ์ผ๋งŒ ๋งˆ์šดํŠธํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋‹ค๋ฅธ ๋ชจ๋“  ํ•ญ๋ชฉ์„ ๋ฎ์–ด์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์›๊ฒฉ์œผ๋กœ ๊ฐ€๋Šฅํ•œ์ง€, ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ํŒŒ์ด์ฌ ํŒจํ‚ค์ง€ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด fig๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํŒ์ด ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋Š” ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‚ด๊ฐ€ ์ฐพ์€ ์ตœ๊ณ ์˜ ์†”๋ฃจ์…˜์€ ์‹ค์ œ ์ฝ”๋“œ์™€ ํ…Œ์ŠคํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋งŒ ๋งˆ์šดํŠธํ•˜๊ณ  ๋‹ค๋ฅธ ํŒŒ์ผ์€ ๊ทธ๋Œ€๋กœ ๋‘๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์†Œ์Šค ํŒŒ์ผ์ด ๋‹ค์‹œ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  ์—…๋ฐ์ดํŠธ๋˜์ง€๋งŒ ์ปดํŒŒ์ผ๋œ ํŒŒ์ผ์„ ๋ฎ์–ด์“ฐ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

python:
  build: .
  volumes:
    - dc_campaign_finance_scraper:/code/dc_campaign_finance_scraper
    - test:/code/test

๋ชจ๋“  3 ๋Œ“๊ธ€

Docker ๋ณผ๋ฅจ์—์„œ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

pip install ํŒŒ์ผ์„ /code ์™ธ๋ถ€์˜ ๋‹ค๋ฅธ ๋””๋ ‰ํ† ๋ฆฌ์— ๋„ฃ๊ณ  ๊ทธ๊ณณ์„ ๋ณด๋„๋ก Python์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? Pip ๋ฌธ์„œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด --root ๋˜๋Š” --target ๊ฐ€ ํŠธ๋ฆญ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ฐพ์€ ์ตœ๊ณ ์˜ ์†”๋ฃจ์…˜์€ ์‹ค์ œ ์ฝ”๋“œ์™€ ํ…Œ์ŠคํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋งŒ ๋งˆ์šดํŠธํ•˜๊ณ  ๋‹ค๋ฅธ ํŒŒ์ผ์€ ๊ทธ๋Œ€๋กœ ๋‘๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์†Œ์Šค ํŒŒ์ผ์ด ๋‹ค์‹œ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  ์—…๋ฐ์ดํŠธ๋˜์ง€๋งŒ ์ปดํŒŒ์ผ๋œ ํŒŒ์ผ์„ ๋ฎ์–ด์“ฐ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

python:
  build: .
  volumes:
    - dc_campaign_finance_scraper:/code/dc_campaign_finance_scraper
    - test:/code/test

์ด๊ฒƒ์€ ๋ช‡ ์‹œ๊ฐ„ ๋™์•ˆ ๋‚˜๋ฅผ ๋ฏธ์น˜๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @saulshanabrook

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰