[๐ŸณDocker] ๊ฐ„๋‹จํ•œ ์–ดํ”Œ์„ ์‹ค์ œ๋กœ ๋ฐฐํฌํ•ด๋ณด๊ธฐ(TravisCI & AWS)

Kimseongeunยท2022๋…„ 6์›” 21์ผ

docker

๋ชฉ๋ก ๋ณด๊ธฐ
3/5
post-thumbnail

Travis CI๋ž€?

Travis CI๋Š”ย Github์—์„œ ์ง„ํ–‰๋˜๋Š” ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ์ง€์†์ ์ธ ํ†ตํ•ฉ(Continuous Integration) ์„œ๋น„์Šค์ด๋‹ค.

2011๋…„์— ์„ค๋ฆฝ๋˜์–ด 2012๋…„์— ๊ธ‰์„ฑ์žฅํ•˜์˜€์œผ๋ฉฐ Ruby์–ธ์–ด๋งŒ ์ง€์›ํ•˜์˜€์ง€๋งŒ ํ˜„์žฌ ๋Œ€๋ถ€๋ถ„์˜ ๊ฐœ๋ฐœ ์–ธ์–ด๋ฅผ ์ง€์›ํ•˜๊ณ  ์žˆ๋‹ค.

Travis CI๋ฅผ ์ด์šฉํ•˜๋ฉด Github repository์— ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ํŠน์ • ์ด๋ฒคํŠธ์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœย ํ…Œ์ŠคํŠธ, ๋นŒ๋“œํ•˜๊ฑฐ๋‚˜ย ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋‹ค. Private repository๋Š” ์œ ๋ฃŒ๋กœ ์ผ์ • ๊ธˆ์•ก์„ ์ง€๋ถˆํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

Travis CI์˜ ํ๋ฆ„

๋กœ์ปฌ Git โ†’ Github โ†’ Travis Cl โ†’ AWS

Travis CI ์ด์šฉ ์ˆœ์„œ

๊นƒํ—™์— ์†Œ์Šค๋ฅผ ์˜ฌ๋ ธ์„ ๋•Œ Travis CI์—์„œ ๊ทธ ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ๊ฐ€์•ผ ํ•˜๊ธฐ์— ๊นƒํ—™๊ณผ Travis CI๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

Travis Cl ์‚ฌ์ดํŠธ๋กœ ์ด๋™ : https://travis-ci.org/

Travis CI์— ๋กœ๊ทธ์ธ ํ• ๋•Œ ๊นƒํ—™ ์•„์ด๋””๋กœ ๋กœ๊ทธ์ธ

Settings ํŽ˜์ด์ง€๋กœ ์ด๋™ ํ›„ ๊นƒํ—™์— ์˜ฌ๋ฆฐ ๋„์ปค ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ ์ฐพ๊ธฐ

Dashboard๋กœ ์ด๋™ํ•˜๋ฉด ๋œจ๋Š” ํ™”๋ฉด


  • Github์—์„œ Travis CI๋กœ ์†Œ์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ์ „๋‹ฌ์‹œํ‚ฌ ๊ฑฐ๋ฉฐ ์ „๋‹ฌ๋ฐ›์€ ๊ฒƒ์„ ์–ด๋–ป๊ฒŒ Test ํ•˜๋ฉฐ ๊ทธ ํ…Œ์ŠคํŠธ๊ฐ€ ์„ฑ๊ณตํ–ˆ์„ ๋•Œ ์–ด๋–ป๊ฒŒ AWS์— ์ „๋‹ฌํ•ด์„œ ๋ฐฐํฌ๋ฅผ ํ•  ๊ฒƒ์ธ์ง€๋ฅผ ์„ค์ •ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.
  • ์ด๋Ÿฌํ•œ ์„ค์ •์„ ์œ„ํ•ด์„œ๋Š” Docker์—์„œ๋Š” docker-compose.yml์— ๋ฌด์—‡์„ ํ• ์ง€๋ฅผ ์ž‘์„ฑํ•ด์คฌ๋‹ค๋ฉด Travis CI์—์„œ๋Š” .travise.yml ํŒŒ์ผ์—์„œ ํ•ด์ค€๋‹ค.


.travis.yml ํŒŒ์ผ ์ž‘์„ฑํ•˜๊ธฐ (ํ…Œ์ŠคํŠธ๊นŒ์ง€)

Travis CI๋ฅผ ์ด์šฉํ•ด์„œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌ๊นŒ์ง€ ํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š”๋ฐ ๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” travis.ymlํŒŒ์ผ์„ ์ž‘์„ฑํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

.travis.yml ์ฝ”๋“œ

  • sudo : ๊ด€๋ฆฌ์ž ๊ถŒํ•œ ๊ฐ–๊ธฐ
  • language : ์–ธ์–ด(ํ”Œ๋žซํผ)์„ ์„ ํƒ
  • services : ๋„์ปค ํ™˜๊ฒฝ ๊ตฌ์„ฑ
  • before_install : ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ• ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ ๊ตฌ์„ฑ
  • script : ์‹คํ–‰ํ•  ์Šคํฌ๋ฆฝํŠธ(ํ…Œ์ŠคํŠธ ์‹คํ–‰)
    • CI= true ํ•ด์ค˜์•ผ ์—๋Ÿฌ๊ฐ€ ์•ˆ๋‚จ
    • coverage : ํ…Œ์ŠคํŠธ ํ•œ ๊ฒƒ์„ ๋” ์ƒ์„ธํ•˜๊ฒŒ ๋ณด์—ฌ์คŒ.
  • after_success : ํ…Œ์ŠคํŠธ ์„ฑ๊ณต ํ›„ ํ•  ์ผ

travis์—์„œ ๋œจ๋Š” ํ™”๋ฉด

์•„๋ž˜ job config๋ฅผ ์ญ‰ ํ™•์ธํ•ด๋ณด๋ฉด ๋‚ด๊ฐ€ ์„ค์ •ํ•œ๋Œ€๋กœ ์ž˜ ๋‚˜์™”์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


AWS ์•Œ์•„๋ณด๊ธฐ

๋ฐฐํฌํ•˜๋Š” ์ˆœ์„œ

AWS ์‚ฌ์ดํŠธ๋กœ ๊ฐ€๊ธฐ : https://aws.amazon.com/

ํšŒ์› ๊ฐ€์ž…ํ•˜๊ธฐ : ์‹ ์šฉ ์นด๋“œ ๋“ฑ๋ก์„ ํ•ด์•ผ ํ•จ

AWS Dashboard๋กœ ์˜ค๊ธฐ

Elastic BeanStalk ๊ฒ€์ƒ‰

EC2๋ž€ ๋ฌด์—‡์ธ๊ฐ€? (Elastic Compute Cloud)

๐Ÿ’ก Amazon Elastic Compute Cloud(Amazon EC2)๋Š” Amazon Web Services(AWS) ํด๋ผ์šฐ๋“œ์—์„œ ํ™•์žฅ์‹ ์ปดํ“จํŒ…์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Amazon EC2๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•˜๋“œ์›จ์–ด์— ์„ ํˆฌ์žํ•  ํ•„์š”๊ฐ€ ์—†์–ด ๋” ๋น ๋ฅด๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๊ณ  ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Amazon EC2๋ฅผ ํ†ตํ•ด ์›ํ•˜๋Š” ๋งŒํผ ๊ฐ€์ƒ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ๋ณด์•ˆ ๋ฐ ๋„คํŠธ์›Œํฌ ๊ตฌ์„ฑ๊ณผ ์Šคํ† ๋ฆฌ์ง€ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ Amazon EC2๋Š” ์š”๊ตฌ ์‚ฌํ•ญ์ด๋‚˜ ๊ฐ‘์ž‘์Šค๋Ÿฌ์šด ์ธ๊ธฐ ์ฆ๋Œ€ ๋“ฑ ๋ณ€๋™ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ์‹ ์†ํ•˜๊ฒŒ ๊ทœ๋ชจ๋ฅผ ํ™•์žฅํ•˜๊ฑฐ๋‚˜ ์ถ•์†Œํ•  ์ˆ˜ ์žˆ์–ด ์„œ๋ฒ„ ํŠธ๋ž˜ํ”ฝ ์˜ˆ์ธก ํ•„์š”์„ฑ์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค.

=> ํ•œ ๋Œ€์˜ ์ปดํ“จํ„ฐ๋ฅผ ์ž„๋Œ€ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋จ.ย ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ปดํ“จํ„ฐ์— OS๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์›น์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋žจ๋“ค(์›น์„œ๋ฒ„, DB)์„ย ์„ค์น˜ํ•ด์„œ ์‚ฌ์šฉย  ํ•˜๋ฉด ๋œ๋‹ค. 1๋Œ€์˜ ์ปดํ“จํ„ฐ๋ฅผ ํ•˜๋‚˜์˜ EC2 ์ธ์Šคํ„ด์Šค๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

EB๋ž€ ๋ฌด์—‡์ธ๊ฐ€ ? (Elastic BeanStalk)

๐Ÿ’ก AWS Elastic Beanstalk๋Š” Apache, Nginx ๊ฐ™์€ ์นœ์ˆ™ํ•œ ์„œ๋ฒ„์—์„œ Java, NET, PHP, Node.js, Python, Ruby, Go ๋ฐย Docker์™€ ํ•จ๊ป˜ ๊ฐœ๋ฐœ๋œ ์›น ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋ฐ ์„œ๋น„์Šค๋ฅผย ๋ฐฐํฌํ•˜๊ณ  ํ™•์žฅํ•˜๊ธฐ ์‰ฌ์šด ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.์•„๋ž˜์„œ ๋ณด๋Š” ๋„ํ‘œ์™€ ๊ฐ™์ด Elastic Beanstalk์€ EC2 ์ธ์Šคํ„ด์Šค๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ™์ด ๋งŽ์€ ๊ฒƒ๋“ค์„ ํฌํ•จํ•œ "ํ™˜๊ฒฝ"์„ ๊ตฌ์„ฑํ•˜๋ฉฐ ๋งŒ๋“ค๊ณ  ์žˆ๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ์ด ํ™˜๊ฒฝ์„ ๊ด€๋ฆฌํ•ด์ค๋‹ˆ๋‹ค.

โ‡’ ํ™˜๊ฒฝ์ด๊ณ  ์ด ํ™˜๊ฒฝ ์•ˆ์—์„œ ๋งŽ์€ ๊ฒƒ๋“ค์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋ณด๋ฉด ๋จ.


Elastic Beanstalk์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋งŒ๋“ค๊ธฐ

์ƒˆ๋กœ์šด Elastic Beanstalk ํ™˜๊ฒฝ ๋งŒ๋“œ๋Š” ์ˆœ์„œ

Create Application ๋ฒ„ํŠผ ํด๋ฆญ

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฆ„ ์ •ํ•˜๊ธฐ

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”Œ๋žซํผ ์„ ํƒ

Create Application ๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ์„œ ์ƒ์„ฑํ•˜๊ธฐ

์•ฑ ์ƒ์„ฑ์ค‘์ด ๋œธ

๋‹ค ์ƒ์„ฑ ํ›„

ํ˜„์žฌ ์ƒํ™ฉ ๋ณด๊ณ  ๊ฐ€๊ธฐ

ํŠธ๋ž˜ํ”ฝ์ด ๋งŽ์ง€ ์•Š์„๋•Œ

ํŠธ๋ž˜ํ”ฝ์ด ๋งŽ์•„ ์งˆ๋•Œ

  • EC2 ์ธ์Šคํ„ด์Šค ํ•˜๋‚˜๋กœ ํŠธ๋ž˜ํ”ฝ์ด ๋งŽ์•„์กŒ์„ ๋•Œ์˜ ์š”์ฒญ์„ ๋‹ค ๊ฐ๋‹นํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜ ๋” ์ด์šฉ์ด ๋˜๋ฉด์„œ ์ž˜ ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค

.travis.yml ํŒŒ์ผ ์ž‘์„ฑํ•˜๊ธฐ (๋ฐฐํฌ ๋ถ€๋ถ„)

ํ˜„์žฌ๋Š” ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑ ํ›„ ์–ดํ”Œ์„ ์‹คํ–‰ํ•˜์—ฌ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ถ€๋ถ„๊นŒ์ง€ travis ์„ค์ •์„ ํ•˜์˜€๋Š”๋ฐ,

์ด์ œ๋Š” ํ…Œ์ŠคํŠธ์— ์„ฑ๊ณตํ•œ ์†Œ์Šค๋ฅผ AWS Elastic Beanstalk์— ์ž๋™์œผ๋กœ ๋ฐฐํฌํ•˜๋Š” ๋ถ€๋ถ„์„ travis ํŒŒ์ผ์— ๋„ฃ์–ด์ค„ ์ฐจ๋ก€

deploy:
  provider: elasticbeanstalk
  region: "us-west-2"
  app: "docker-react-app"
  env: "Dockerreactapp-env"
  bucket_name: "elasticbeanstalk-us-west-2-896153392792"
  bucket_path: "docker-react-app"
  on:
    branch: master
  • provider : ์™ธ๋ถ€ ์„œ๋น„์Šค ํ‘œ์‹œ (s3, elasticbeanstalk, firebase ๋“ฑ)
  • region : ํ˜„์žฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” AWS ์˜ ๋ฌผ๋ฆฌ์  ์žฅ์†Œ (์ข…๋ฅ˜๊ฐ€ ๊ต‰์žฅํžˆ ๋งŽ์Œ)
  • app : ์ƒ์„ฑํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ด๋ฆ„
  • env :
  • bucket_name : ํ•ด๋‹น ์ผ๋ž˜์Šคํ‹ฑ ๋นˆ์Šคํ†ก์„ ์œ„ํ•œ s3 ๋ฒ„ํ‚ท ์ด๋ฆ„

    Travis CI - travis ์—์„œ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํŒŒ์ผ์„ ์••์ถ•ํ•ด์„œ S3์— ๋ณด๋‚ธ๋‹ค. โ†’ S3

    • S3 : ํŒŒ์ผ๋“ค์„ ์•ˆ์— ์ €์žฅํ•ด๋‘๋Š” ์„œ๋น„์Šค

    • ์—˜๋ผ์Šคํ‹ฑ ๋นˆ์Šคํ†ก์„ ์ƒ์„ฑํ•  ๋•Œ ์ž๋™์ ์œผ๋กœ S3๊ฐ€ ์ƒ์„ฑ ๋จ โ†’ ์ž๋™์œผ๋กœ S3 ๋ฒ„์ผ“์ด ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ.

    • ์ด ๋นˆ์Šคํ†ก ์•ˆ์— travis CI์—์„œ ํŒŒ์ผ์„ ๋ณด๋‚ด๋ฉด ๊ทธ ํŒŒ์ผ๋“ค์„ ์ €์žฅํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ž„!

  • bucket_path : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ด๋ฆ„๊ณผ ๋™์ผ
  • on
    • branch : ์–ด๋–ค ๋ธŒ๋žœ์น˜์— ํ‘ธ์‹œํ•  ๋•Œ AWS์— ๋ฐฐํฌํ•  ๊ฒƒ์ธ์ง€ ์„ค์ •

ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ์•„๋ฌด๋Ÿฐ ์ธ์ฆ ์—†์ด๋Š” Travis CI์—์„œ ๋งˆ์Œ๋Œ€๋กœ AWS์— ํŒŒ์ผ์„ ์ „์†กํ•  ์ˆ˜๋Š” ์—†๋‹ค. ๊ทธ๋ž˜์„œ ์ด์ œ๋Š” Travis CI๊ฐ€ AWS์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ฃผ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž.


Travis CI์˜ AWS์ ‘๊ทผ์„ ์œ„ํ•œ API ์ƒ์„ฑ

์†Œ์Šค ํŒŒ์ผ์„ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ์ ‘๊ทผ ์š”๊ฑด

  • ๊นƒํ—ˆ๋ธŒ
    • Travis CI ์—ย  ๋กœ๊ทธ์ธํ•˜๋Š” ๊ณผ์ •์—์„œ ๊นƒํ—ˆ๋ธŒ ๊ณ„์ •์„ ์—ฐ๋™ํ•จ์œผ๋กœ์จ ์ธ์ฆ ์™„๋ฃŒ
  • Travis CI
    • AWS์—์„œ ์ œ๊ณตํ•˜๋Š” ์•ก์„ธ์Šค ํ‚ค์™€ ๋น„๋ฐ€ ์•ก์„ธ์Šค ํ‚ค๋ฅผ Travis yml ํŒŒ์ผ์—๋‹ค๊ฐ€ ์ ์–ด์ฃผ๋ฉด ๋จ
  • AWS

์ธ์ฆ์„ ์œ„ํ•ด์„œ๋Š” API Key๊ฐ€ ํ•„์š”.

Secret, Access API Key ๋ฐ›๋Š” ์ˆœ์„œ

  1. IAM USER ์ƒ์„ฑ

    • IAM์€ ๋ฌด์—‡์ธ๊ฐ€ ? (Identity and Access Management) ๐Ÿ’ก AWS ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ์›น ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. IAM์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ธ์ฆ(๋กœ๊ทธ์ธ) ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ(๊ถŒํ•œ ์žˆ์Œ)๋œ ๋Œ€์ƒ์„์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.

    • ๋ฃจํŠธ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด์•ˆ์ƒ ์ข‹์ง€ ์•Š์Œ. ๊ทธ๋ž˜์„œ IAM์‚ฌ์šฉ์ž์—๊ฒŒ ์—˜๋ผ์Šคํ‹ฑ ๋นˆ์Šคํ†ก์„ ์‚ฌ์šฉํ•  ๊ถŒํ•œ์„ ์ œ๊ณต

    Dashbord โ†’ IAM๊ฒ€์ƒ‰ โ†’ ์‚ฌ์šฉ์ž ํด๋ฆญ โ†’ ์‚ฌ์šฉ์ž ์ถ”๊ฐ€ํด๋ฆญ โ†’ ์‚ฌ์šฉ์ž ์„ธ๋ถ€ ์ •๋ณด ์„ค์ • โ†’์‚ฌ์šฉ์ž ๊ถŒํ•œ ์„ค์ • โ†’ ๊ณ„์ • ์ƒ์„ฑ ์„ฑ๊ณต

  2. APIํ‚ค๋ฅผ Travis yml ํŒŒ์ผ์— ์ ์–ด์ฃผ๊ธฐ

    • ์ง์ ‘ API ํ‚ค๋ฅผ Travis yml ํŒŒ์ผ์— ์ ์–ด ์ฃผ๋ฉด ๋…ธ์ถœ์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๊ณณ์— ์ ๊ณ  ๊ทธ๊ฒƒ์„ ๊ฐ€์ ธ์™€์ค˜์•ผ ํ•œ๋‹ค.
    • Travis ์›น์‚ฌ์ดํŠธ ํ•ด๋‹น ์ €์žฅ์†Œ ๋Œ€์‹œ๋ณด๋“œ์— ์˜ค๊ธฐ
    • ์„ค์ • ํด๋ฆญ(More oprions)
    • AWS์—์„œ ๋ฐ›์€ API ํ‚ค๋“ค์„ NAME๊ณผ VALUE์— ์ ์–ด์„œ ๋„ฃ์–ด์ค€๋‹ค. ์ด๊ณณ์— ๋„ฃ์–ด ์ฃผ๋ฉด ์™ธ๋ถ€์—์„œ ์ ‘๊ทผ์„ ํ•  ์ˆ˜ ์—†์–ด ๋”์šฑ ์•ˆ์ „ํ•จ.
    • Travis CI ์›น์‚ฌ์ดํŠธ์—์„œ ๋ณด๊ด€ ์ค‘์ธ Key๋ฅผ ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ๊ฐ€์ง€๊ณ  ์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ travis yml ํŒŒ์ผ์—์„œ ์„ค์ •์„ ํ•ด์ค๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.
      access_key_id: $AWS_ACCESS_KEY
      secret_access_key: $AWS_SECRET_ACCESS_KEY

์ด๋ ‡๊ฒŒ ํ•˜๊ณ  ๋‹ค์‹œ ๋นˆ์Šคํ†ก์œผ๋กœ ๊ฐ€๋„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๋ฐ ๊ทธ ์ด์œ ๋Š” ํฌํŠธ๋งตํ•‘์„ ์•ˆํ•ด์ค˜์„œ ๊ทธ๋Ÿผ

EXPOSE 80
profile
๊น€์„ฑ์€์ž…๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€