chap 19 - JAVA-JIKIMI/SPRING-IN-ACTION-5 GitHub Wiki

19.1 배포 μ˜΅μ…˜

μŠ€ν”„λ§ λΆ€νŠΈ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ λ‹€μŒ λͺ‡ κ°€μ§€ λ°©λ²•μœΌλ‘œ λΉŒλ“œν•˜κ³  μ‹€ν–‰ν•  수 μžˆλ‹€.

  • STS λ‚˜ IntelliJ IDEA λ“±μ˜ IDE μ—μ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λΉŒλ“œν•˜κ³  μ‹€ν–‰ν•œλ‹€.
  • 메이븐 spring:runμ΄λ‚˜ κ·Έλž˜λ“€ bootRun νƒœμŠ€ν¬λ₯Ό μ‚¬μš©ν•˜μ—¬ λͺ…λ Ήν–‰μ—μ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λΉŒλ“œν•˜κ³  μ‹€ν–‰ν•œλ‹€.
  • λ©”μ΄λΈμ΄λ‚˜ κ·Έλž˜λ“€μ„ μ‚¬μš©ν•΄μ„œ μ‹€ν–‰ κ°€λŠ₯ν•œ JAR 파일(λͺ…λ Ήν–‰μ—μ„œ μ‹€ν–‰λ˜κ±°λ‚˜ ν΄λΌμš°λ“œμ— 배포될 수 있음)을 μƒμ„±ν•œλ‹€.

IDEλ‚˜ 메이븐 및 κ·Έλž˜λ“€μ„ μ‚¬μš©ν•œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 싀행은 ν”„λ‘œλ•μ…˜ ν™˜κ²½μ—λŠ” κ³ λ €ν•  수 μ—†μŒ μ‹€ν–‰ κ°€λŠ₯ JAR νŒŒμΌμ΄λ‚˜ μžλ°” WAR νŒŒμΌμ€ ν”„λ‘œλ•μ…˜ ν™˜κ²½μ—μ„œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ‡ λ°°ν¬ν•˜λŠ” ν™•μ‹€ν•œ 방법

[파일 νƒ€μž…]

μžλ²„ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„œλ²„μ— λ°°ν¬ν•˜κΈ° (WAR 파일)

ex) ν†°μΊ£, μ›ΉμŠ€ν”Όμ–΄, μ›Ήλ‘œμ§ λ“±μ˜ μ›Ήμ„œλ²„ λ˜λŠ” μžλ°” μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„œλ²„μ— μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λΉŒλ“œ (μ‹€ν–‰μ‹œ WAS, μ›Ήμ„œλ²„κ°€ ν•„μš”ν•¨) [μ°Έκ³  자료 - Springbootμ—μ„œ jarμ—μ„œ war νŒŒμΌμ„ λ§Œλ“€κ²Œ μ„€μ • λ³€κ²½ν•˜κΈ°]

ν΄λΌμš°λ“œμ— λ°°ν¬ν•˜κΈ°

μ—¬λŸ¬ ν΄λΌμš°λ“œ ν”Œλž«νΌμœΌλ‘œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ°°ν¬ν•œλ‹€λ©΄ μ‹€ν–‰ κ°€λŠ₯ν•œ JAR 파일 배포가 μ΅œμƒμ˜ 선택

19.3 ν΄λΌμš°λ“œ νŒŒμš΄λ“œλ¦¬μ— JAR 파일 ν‘Έμ‹œν•˜κΈ°

  • ν΄λΌμš°λ“œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ°°ν¬ν•˜λŠ” 것이 자체적인 데이터 μ„Όν„°λ₯Ό μš΄μ˜ν•˜λŠ” 것에 λΉ„ν•΄ 섀득λ ₯이 있고 λΉ„μš© 효율적인 λŒ€μ•ˆ
  • PaaS - platform as a service (μΈν„°λ„·μœΌλ‘œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 섀계/개발/배포λ₯Ό ν•  λ•Œ ν•„μš”ν•œ ν•˜λ“œμ—μ–΄μ™€ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ œκ³΅ν•˜λŠ” ν”Œλž«νΌ)λ₯Ό μ œκ³΅ν•˜λŠ” ν΄λΌμš°λ“œκ°€ λŒ€μ„Έλ‹€.
  • λͺ‡ κ°€μ§€ λΆ€κ°€ μ„œλΉ„μŠ€(예λ₯Ό λ“€μ–΄ λ°μ΄ν„°λ² μ΄μŠ€λ‚˜ λ©”μ„Έμ§€ 브둜컀)와 ν•¨κ»˜ 미리 κ΅¬μΆ•λœ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 배포 ν”Œλž«νΌμ„ μ œκ³΅ν•˜μ—¬ 우리 μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό κ²°ν•©ν•œλ‹€.
  • λ˜ν•œ 우리 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ‹€ν–‰ μΈμŠ€ν„΄μŠ€λ₯Ό μΆ”κ°€ λ˜λŠ” μ œκ±°ν•˜μ—¬ 규λͺ¨ ν™•μž₯(λ˜λŠ” μΆ•μ†Œ)을 쉽고 λΉ λ₯΄κ²Œ ν•΄μ€€λ‹€.

ν΄λΌμš°λ“œ νŒŒμš΄λ“œλ¦¬λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 개발, 배포, ν™•μž₯을 μœ„ν•œ μ˜€ν”ˆμ†ŒμŠ€/λ©€ν‹° ν΄λΌμš°λ“œ PaaS ν”Œλž«νΌμ΄λ©°, ν΄λΌμš°λ“œ νŒŒμš΄λ“œλ¦¬ μž¬λ‹¨μ— μ˜ν•΄ 졜초 κ°œλ°œλ˜μ—ˆλ‹€.

μƒμš© 버전은 μŠ€ν”„λ§ ν”Œλž«νΌμ˜ ν”„λ ˆμž„μ›Œν¬μ™€ λ‹€λ₯Έ 라이브러리λ₯Ό μ£Όκ΄€ν•˜λŠ” ν”Όλ³΄νƒˆμ‚¬μ—μ„œ μ œκ³΅ν•œλ‹€. μ‹μžμž¬ μ„œλΉ„μŠ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λΉŒλ“œν•˜κ³  PWS(pivotal Web Services)에 배포

  • PWSλ₯Ό μ‚¬μš©ν•˜λ €λ©΄ 계정을 등둝해야 ν•˜λ©° 계정이 λ“±λ‘λ˜λ©΄ μ•„λž˜μ—μ„œ cf λͺ…λ Ήν–‰ 도ꡬλ₯Ό λ‹€μš΄λ‘œλ“œν•˜μ—¬ μ„€μΉ˜
  • cf λͺ…λ Ήν–‰ 도ꡬλ₯Ό μ‚¬μš©ν•˜μ—¬ ν΄λΌμš°λ“œ νŒŒμš΄λ“œλ¦¬μ— μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ ν‘Έμ‹œν•œλ‹€. [λͺ…λ Ήν–‰ 도ꡬ download]
  • https://console.run.pivotal.io/tools
$ mvn  package
$ gradlew build
$ cf push ibngredient-service -p target/ingredient-service-0.0.19-SNAPSHOT.jar

19.4 도컀 μ»¨ν…Œμ΄λ„ˆμ—μ„œ μŠ€ν”„λ§ λΆ€νŠΈ μ‹€ν–‰ν•˜κΈ°

  • λ„μ»€λŠ” ν΄λΌμš°λ“œμ—μ„œ λͺ¨λ“  μ’…λ₯˜μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ λ°°ν¬ν•˜λŠ” μ‚¬μ‹€μƒμ˜ ν‘œμ€€μ΄ λ˜μ—ˆλ‹€.
  • λ„μ»€λ‘œ μƒμ„±λ˜λŠ” 것과 같은 μ»¨ν…Œμ΄λ„ˆ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ•„μ΄λ””μ–΄λŠ” μ‹€μ„Έκ³„μ˜ μ»¨ν…Œμ΄λ„ˆμ—μ„œ λΉ„λ‘―λ˜μ—ˆλ‹€.
  • 선적 λ¬Όν’ˆμ„ λ‹΄λŠ” λͺ¨λ“  μ»¨ν…Œμ΄λ„ˆλŠ” λ‚΄μš©λ¬Όκ³Ό λ¬΄κ΄€ν•˜κ²Œ ν‘œμ€€ν™”λœ 크기와 ν˜•νƒœλ₯Ό κ°–λŠ”λ‹€. λ”°λΌμ„œ μ»¨ν…Œμ΄λ„ˆλŠ” μ‰½κ²Œ 배에 μŒ“μ•„ μ˜¬λ¦¬κ±°λ‚˜ κΈ°μ°¨λ‚˜ 트럭으둜 μš΄λ°˜ν•  수 μžˆλ‹€.
  • 이와 μœ μ‚¬ν•œ λ°©λ²•μœΌλ‘œ μ»¨ν…Œμ΄λ„ˆ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ κ³΅ν†΅λœ μ»¨ν…Œμ΄λ„ˆ ν˜•μ‹μ„ κ³΅μœ ν•˜λ―€λ‘œ μ»¨ν…Œμ΄λ„ˆμ— ν¬ν•¨λœ μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό λ¬΄κ΄€ν•˜κ²Œ μ–΄λ””μ„œλ“  배포 및 μ‹€ν–‰ν•  수 μžˆλ‹€.

도컀 이미지 생성 (λ„μ»€μ˜ 3κ°€μ§€ κΈ°μ–΅ν•˜μž - dockerfile, image, container)

[도컀 κΈ°λ³Έ]

[도컀 get started]

λ‹€μš΄λ‘œλ“œ ν›„ hub 둜그인

  • Spotify(μŠ€ν¬ν‹°νŒŒμ΄)의 메이븐 ν”ŒλŸ¬κ·ΈμΈμ„ μ‚¬μš©ν•˜λ©΄ μŠ€ν”„λ§ λΆ€νŠΈ λΉŒλ“œμ˜ κ²°κ³Όλ₯Ό 더 μ‰½κ²Œ 도컀 μ»¨ν…Œμ΄λ„ˆλ‘œ 생성할 수 μžˆλ‹€.
<build>
    <plugins>
    ...
    <plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-file-maven-plugin</artifactId>
    <version>1.4.3</version>
    <configuration>
        <repository>
             ${docker.image.prefix}/${project.artifactId}
        </repository>
        <buildArgs>
            <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
        </buildArgs>
    </configuration>
    </plugin>
    </plugin>
</build>
  • 블둝 μ•„λž˜μ—λŠ” 도컀 이미지 생성에 ν•„μš”ν•œ 속성듀을 μ„€μ •ν•œλ‹€.
  • μš”μ†Œμ—λŠ” 도컀 리퍼지터리에 λ‚˜νƒ€λ‚˜λŠ” 도컀 μ΄λ―Έμ§€μ˜ 이름을 μ§€μ •ν•œλ‹€.
  • μ—¬κΈ°μ„œ μ§€μ •ν–ˆλ“―μ΄ μ΄λ¦„μ˜ 제일 μ•žμ—λŠ” docker.image.prefix λΌλŠ” μ΄λ¦„μ˜ 메이븐 속성 값이 μ§€μ •λ˜κ³  κ·Έ λ‹€μŒμ—λŠ” 메이븐 ν”„λ‘œμ νŠΈμ˜ artifact IDκ°€ λΆ™λŠ”λ‹€.
  • ν”„λ‘œμ νŠΈμ˜ artifact IDλŠ” λ°”λ‘œ μœ„μ˜ artifactId μš”μ†Œμ— μ§€μ •λ˜μ–΄ 있으며 docker.image.prefix 속성은 λ‹€μŒκ³Ό 같이 properties μš”μ†Œμ— μ§€μ •ν•΄μ•Ό ν•œλ‹€.
  • μš”μ†Œ μ•„λž˜μ—λŠ” 메이븐 λΉŒλ“œκ°€ μƒμ„±λ˜λŠ” JAR νŒŒμΌμ„ μ§€μ •ν•œλ‹€. (도컀 이미지에 ν¬ν•¨μ‹œν‚€κΈ° μœ„ν•΄)
  • μ΄λ•Œ target 디렉터리에 μžˆλŠ” JAR 파일의 이름을 κ²°μ •ν•˜κΈ° μœ„ν•΄ 메이븐 속성인 project.build.finalName 을 μ‚¬μš©ν•œλ‹€.
<properties>
...
<docker.image.prefix>tacocloud</docker.image.prefix>
</properties>

이것이 타코 ν΄λΌμš°λ“œ μ‹μžμž¬ μ„œλΉ„μŠ€μ˜ pom.xml νŒŒμΌμ΄μ—ˆλ‹€λ©΄ 결과둜 μƒμ„±λ˜λŠ” 도컀 μ΄λ―Έμ§€λŠ” 도컀 λ¦¬νΌμ§€ν„°λ¦¬μ˜ tacocloud/ingredient-service에 μ €μž₯λ˜μ—ˆμ„ 것이닀.

이처럼 메이븐 λΉŒλ“œ λͺ…세에 μ œκ³΅ν•œ 정보 μ™Έμ˜ λ‹€λ₯Έ λͺ¨λ“  도컀 이미지 μ •λ³΄λŠ” Dockerfileμ΄λΌλŠ” μ΄λ¦„μ˜ νŒŒμΌμ— μ •μ˜λœλ‹€.

도컀 이미지 docker 파일

FROM openjdk:8-jdk-alpine
ENV SPRING_PROFILES_ACTIVE docker
VOLUMN /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java", `
            "-Djava.security.egd=file:/dev/.urandom", `
            "-jar", `
            "/app.jar"]
  • FROMμ—λŠ” μƒˆ μ΄λ―Έμ§€μ˜ 기반이 λ˜λŠ” 이미지λ₯Ό μ§€μ •ν•œλ‹€. μƒˆ μ΄λ―Έμ§€λŠ” κΈ°λ³Έ 이미지λ₯Ό ν™•μž₯ν•œλ‹€. μ—¬κΈ°μ„œλŠ” κΈ°λ³Έ 이미지가 OpenJDK 버전 8을 기반으둜 ν•˜λŠ” μ»¨ν…Œμ΄λ„ˆ 이미지인 openjdk:8-jdkalpine이닀.
  • ENVμ—λŠ” ν™˜κ²½ λ³€μˆ˜λ₯Ό μ„€μ •ν•œλ‹€. μ—¬κΈ°μ„œλŠ” ν™œμ„± ν”„λ‘œνŒŒμΌμ„ 기반으둜 μŠ€ν”„λ§ λΆ€νŠΈ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ ꡬ성 속성을 λ³€κ²½ν•  κ²ƒμ΄λ―€λ‘œ ν™˜κ²½ λ³€μˆ˜μΈ SPRING_PROFILES_ACTIVE docker둜 μ„€μ •ν•˜μ˜€λ‹€.

μŠ€ν”„λ§ λΆ€νŠΈ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ docker ν™œμ„± ν”„λ‘œνŒŒμΌλ‘œ μ‹œμž‘ν•˜λ„λ‘ ν•˜κΈ° μœ„ν•΄μ„œλ‹€.

  • VOLUME은 μ»¨ν…Œμ΄λ„ˆμ˜ 마운트 지점을 μƒμ„±ν•œλ‹€. μ—¬κΈ°μ„œλŠ” ν•„μš” μ‹œμ— μ»¨ν…Œμ΄λ„ˆκ°€ /tmp 디렉터리에 데이터λ₯Ό μ“Έ 수 μžˆλ„λ‘ /tmp에 마운트 지점을 μƒμ„±ν•œλ‹€.
  • ARGμ—λŠ” λΉŒλ“œ μ‹œμ— 전달할 수 μžˆλŠ” 인자λ₯Ό μ„ μ–Έν•œλ‹€. μ—¬κΈ°μ„œλŠ” 메이븐 ν”ŒλŸ¬κ·ΈμΈμ˜ 블둝에 μ§€μ •λœ μΈμžμ™€ λ™μΌν•œ JAR_FILEμ΄λΌλŠ” μ΄λ¦„μ˜ 인자λ₯Ό μ„ μ–Έν•œλ‹€.
  • COPYλŠ” μ§€μ •λœ 경둜의 νŒŒμΌμ„ λ‹€λ₯Έ 경둜둜 λ³΅μ‚¬ν•œλ‹€. μ—¬κΈ°μ„œλŠ” 메이븐 ν”ŒλŸ¬κ·ΈμΈμ— μ§€μ •λœ JAR νŒŒμΌμ„ app.jarλΌλŠ” μ΄λ¦„μ˜ 파일둜 도컀 이미지에 λ³΅μ‚¬ν•œλ‹€.
  • ENTRYPOINTμ—λŠ” μ»¨ν…Œμ΄λ„ˆκ°€ μ‹œμž‘λ  λ•Œ μ‹€ν–‰ν•˜κΈ° μœ„ν•œ λͺ…λ Ήν–‰ μ½”λ“œλ₯Ό λ°°μ—΄λ‘œ μ§€μ •ν•œλ‹€. μ—¬κΈ°μ„œλŠ” μ‹€ν–‰ κ°€λŠ₯ν•œ app.jar νŒŒμΌμ„ μ‹€ν–‰μ‹œν‚€μ§€ μœ„ν•΄ λͺ…λ Ήν–‰μ—μ„œ javaλ₯Ό μ‚¬μš©ν•˜λ„λ‘ μ§€μ •ν•œλ‹€.

일반적으둜 μŠ€ν”„λ§ λΆ€νŠΈ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ ν¬ν•¨ν•˜λŠ” μ»¨ν…Œμ΄λ„ˆ μ΄λ―Έμ§€μ—λŠ” SPRING_PROFILES_ACTIVE ν™˜κ²½ λ³€μˆ˜λ₯Ό ENV에 μ„€μ •ν•˜λŠ” 것이 μ’‹λ‹€.

μ΄λ ‡κ²Œ ν•˜λ©΄ λ„μ»€μ—μ„œ μ‹€ν–‰λ˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— κ³ μœ ν•œ 빈과 ꡬ성 속성을 ꡬ성할 수 있기 λ•Œλ¬Έμ΄λ‹€.

μ‹μžμž¬ μ„œλΉ„μŠ€μ™€ λͺ½κ³  데이터 λ² μ΄μŠ€μ— μ—°κ²°

  • μ‹μžμž¬ μ„œλΉ„μŠ€μ˜ κ²½μš°λŠ” λ³„κ°œμ˜ μ»¨ν…Œμ΄λ„ˆμ—μ„œ μ‹€ν–‰λ˜λŠ” λͺ½κ³  데이터 λ² μ΄μŠ€μ— 우리 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ—°κ²°ν•  방법이 ν•„μš”ν•˜λ‹€.
  • 기본적으둜 μŠ€ν”„λ§ λ°μ΄ν„°λŠ” localhost의 27017 포트λ₯Ό λ¦¬μŠ€λ‹ν•˜λŠ” λͺ½κ³  λ°μ΄ν„°λ² μ΄μŠ€μ™€μ˜ 연결을 μ‹œλ„ν•œλ‹€.
  • κ·ΈλŸ¬λ‚˜ 이것은 둜컬둜 싀행될 λŒ€λ§Œ κ°€λŠ₯ν•˜κ³  μ»¨ν…Œμ΄λ„ˆμΌ λ•ŒλŠ” λ‹€λ₯΄λ‹€. λ”°λΌμ„œ spring.data.mongodb.host 속성을 κ΅¬μ„±ν•˜μ—¬ λͺ½κ³  λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‚¬μš©ν•  수 μžˆλŠ” 호슀트 이름을 μŠ€ν”„λ§ 데이터에 μ•Œλ €μ£Όμ–΄μ•Ό ν•œλ‹€.
  • λ‹€μŒμ˜ 도컀에 νŠΉμ •λœ ꡬ성을 application.yml νŒŒμΌμ— μΆ”κ°€ν•˜μ—¬ docker ν”„λ‘œνŒŒμΌμ΄ ν™œμ„±ν™”λ  λ•Œ μŠ€ν”„λ§ 데이터가 mongoλΌλŠ” 호슀트의 λͺ½κ³  λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ—°κ²°ν•˜λ„λ‘ ꡬ성할 수 μžˆλ‹€.
spring:
   profiles: docker
   data: 
   mongodb:
      host: mongo

μ΄λ ‡κ²Œ ν•˜λ©΄ 도컀 μ»¨ν…Œμ΄λ„ˆκ°€ μ‹œμž‘λ˜λŠ” μ¦‰μ‹œ mongo ν˜ΈμŠ€νŠΈκ°€ λ‹€λ₯Έ μ»¨ν…Œμ΄λ„ˆμ—μ„œ μ‹€ν–‰ 쀑인 λͺ½κ³  λ°μ΄ν„°λ² μ΄μŠ€λ‘œ μ—°κ²°λœλ‹€. μ΄μ œλŠ” 도컀 이미지λ₯Ό λΉŒλ“œν•  μ€€λΉ„κ°€ λ˜μ—ˆμœΌλ―€λ‘œ 메이븐 래퍼λ₯Ό μ‚¬μš©ν•΄μ„œ package와 dockerfile:buildλ₯Ό μ‹€ν–‰μ‹œμΌœ JAR νŒŒμΌμ„ λΉŒλ“œν•˜λ©΄ 도컀 이미지가 μƒμ„±λœλ‹€.

mvnw package dockerfile:build
  • μ‹μžμž¬ μ„œλΉ„μŠ€ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹œμž‘ν•˜κΈ°μ— μ•žμ„œ λͺ½κ³  λ°μ΄ν„°λ² μ΄μŠ€μ˜ μ»¨ν…Œμ΄λ„ˆλ₯Ό λ¨Όμ € μ‹œμž‘ν•΄μ•Όν•œλ‹€.
$ docker run --name tacocloud-mongo -d  mongo:3.7.9-xenial
  • λ§ˆμ§€λ§‰μœΌλ‘œ μ‹μžμž¬ μ„œλΉ„μŠ€ μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰ν•˜λ©΄ λœλ‹€. μ΄λ•Œ 방금 μ‹œμž‘λœ λͺ½κ³  μ»¨ν…Œμ΄λ„ˆμ™€ μ—°κ²°ν•œλ‹€.
$ docker run -p  8080:8081 \
             --link tacocloud-mongo:mongo
             tacocloud/ingredient-service

μ»¨ν…Œμ΄λ„ˆμ˜ μŠ€ν”„λ§ λΆ€νŠΈ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ 8081 포트둜 μ‹€ν–‰λ˜λ„λ‘ κ΅¬μ„±ν–ˆμœΌλ―€λ‘œ -p λ§€κ°œλ³€μˆ˜μ—μ„œλŠ” λ‚΄λΆ€ 포트λ₯Ό 호슀트의 8080 포트둜 μ—°κ²°μ‹œν‚¨λ‹€.

--link λ§€κ°œλ³€μˆ˜λŠ” 이 μ»¨ν…Œμ΄λ„ˆλ₯Ό tacocloud-mongo μ»¨ν…Œμ΄λ„ˆμ™€ μ—°κ²°μ‹œν‚¨λ‹€. 그리고 μ΄λ•Œ tacocloud-mongo μ»¨ν…Œμ΄λ„ˆμ˜ 호슀트 이름을 mongo둜 μ§€μ •ν•œλ‹€. μŠ€ν”„λ§ 데이터가 이 호슀트 이름을 μ‚¬μš©ν•΄μ„œ μ—°κ²°ν•  수 μžˆλ„λ‘ ν•˜κΈ° μœ„ν•΄μ„œλ‹€.

λ§ˆμ§€λ§‰μœΌλ‘œ μƒˆ μ»¨ν…Œμ΄λ„ˆμ—μ„œ μ‹€ν–‰λ˜λŠ” μ΄λ―Έμ§€μ˜ 이름 (tacocloud/ingredient-service)을 μ§€μ •ν•œλ‹€.

⚠️ **GitHub.com Fallback** ⚠️