728x90
λ°μν
18μ₯ 컨ν μ΄λμ μ ν리μΌμ΄μ μ€μ κ΄λ¦¬
18.1 λ€λ¨ μ ν리μΌμ΄μ μ€μ
μ€μ λ°μ΄ν° μ’ λ₯λ μΈ κ°μ§λ€.
- λ²μ μ λ°λΌ λ¬λ¦¬μ§λ μ€μ
- λͺ¨λ νκ²½μμ λμΌνμ§λ§ λ²μ λ³λ‘ λ¬λΌμ§λ μ€μ
- νκ²½μ λ°λΌ λ¬λΌμ§λ μ€μ
- κΈ°λ₯ μ€μ
- λ²μ λ³λ‘ μ ν리μΌμ΄μ μ λμμ λ¬λ¦¬νκΈ° μν μ€μ
μ ν리μΌμ΄μ μ μ€μ μ£Όμ νκΈ°
- λ²μ μ λ°λΌ λ¬λΌμ§λ μ€μ κ°μ μ΄λ―Έμ§μ κΈ°λ³Έ μ€μ μ ν¬ν¨μν¨λ€.
- νκ²½λ³λ‘ λ¬λΌμ§λ μ€μ κ°μ 컨ν μ΄λ νμΌ μμ€ν μ μ£Όμ λλ μ€λ²λΌμ΄λ νμΌμ λ£λλ€.
- κΈ°λ₯ μ€μ μ νκ²½ λ³μ ννλ‘ λ€λ£¬λ€.
$ docker container run -d -p 8080:80 diamol/ch18-access-log
$ docker container run -d -p 8081:80 -v "$(pwd)/config/dev:/app/config-override" diamol/ch18-access-log
- 미리 μ μλ κ²½λ‘μμ μ€λ²λΌμ΄λ μ€μ νμΌμ μ½μ΄ λ€μ΄λλ‘ ν΄λλ©΄, μ΄λ€ κ²½λ‘λ‘λ 컨ν μ΄λ νμΌ μμ€ν μ μ€μ νμΌμ μ£Όμ νκΈ°λ§ νλ©΄ ν΄λΉ μ€μ μ μ μ©ν μ μλ€.
- μ΄λ° μ€μ μ κ°λ°μμ μν¬νλ‘λ₯Ό λΆλλ½κ² μ μ§ν μ μλ μ’μ μ¬λ‘λ€.
18.2 νκ²½λ³ μ€μ ν¨ν€μ§νκΈ°
- μ ν리μΌμ΄μ νλ μμν¬μμ νκ²½λ³ μ€μ νμΌμ λͺ¨λ λ°°ν¬μ ν¬ν¨μν¬ μ μλ κΈ°λ₯μ μ 곡νλ€.
- ν΄λΉ κΈ°λ₯μ ν΅ν΄ νκ²½ μ΄λ¦ μ νλ§μΌλ‘ ν΄λΉ νκ²½ μ€μ μ μ μ©ν μ μλ€.
appsettings.json: λͺ¨λ νκ²½ 곡ν΅
appsettings.{ENV}.json: νκ²½λ³ μ€λ²λΌμ΄λ μ€μ
$ docker container run -d -p 8083:80 diamol/ch18-todo-list
$ docker container run -d -p 8084:80 -e DOTNET_ENVIRONMENT=test diamol/ch18-todo-list
λ§μ½, μ€μ νμΌκ³Ό μμ€ μ½λλ₯Ό λ³λμ μμ€ν μΌλ‘ κ΄λ¦¬νλ€λ©΄
- CI/CD νμ΄νλΌμΈμμ μ€μ νμΌμ μμ€ μ½λλ‘ κ°μ Έμ μ΄λ―Έμ§λ₯Ό λΉλνλ λ°©λ²μΌλ‘ κ°λ°κ³Ό μ€μ κ΄λ¦¬λ₯Ό λΆλ¦¬ν μ μλ€.
- κ·Έλ¬λ, μ΄λ―Έμ§μ ν¬ν¨μν¬ μ μλ λ―Όκ°μ 보 λλ¬Έμ μΈλΆμμ 컨ν μ΄λμ μ£Όμ ν΄μΌ λλ λ°μ΄ν°κ° μ‘΄μ¬νλ€.
- λ μ§μ€νΈλ¦¬λ νμ μΈλΆμ λ ΈμΆλ μνμ΄ μλ€κ³ μκ°νκ³ λ³΄μμ μ κ²½μ¨μΌ νλ€.
18.3 λ°νμμμ μ€μ μ½μ΄ λ€μ΄κΈ°
Go μΈμ΄μ Viper
- Go μΈμ΄μμλ Viper λΌλ μ€μ λͺ¨λμ΄ μ£Όλ‘ μ¬μ©λλ€.
- ν¨ν€μ§ λͺ©λ‘μ λ°μ΄νΌλ₯Ό μΆκ°νκ³ , μ½λμμ μ€λ²λΌμ΄λ νμΌμ μ½μ΄ μ¬ μ€μ λλ ν 리λ₯Ό μ§μ νκΈ°λ§ νλ©΄ λλ€.
- μ΄λ―Έμ§μ ν¬ν¨λ config λλ ν°λ¦¬μμ κΈ°λ³Έ μ€μ νμΌμ μ½κ³ , νκ²½λ³ μ€μ νμΌμ config-override λλ ν°λ¦¬μμ μ½μ΄ λ€μΈλ€.
- ν΄λΉ config-override λ νμΌ μμ€ν λ§μ΄νΈλ‘ μΈλΆμμ μ£Όμ λλ€.
TOML
Viper μμλ TOML μ΄λΌλ νμμ μ¬μ©νλ€
- κ΅¬μ‘°κ° κ°κ²°νκΈ° λλ¬Έμ κ°λ°μκ° μ€μ μ μ΄ν΄νκ³ μμ νκΈ° μ½λ€.
- λͺ νν λ°μ΄ν° νμ μμ€ν μ μ 곡νλ€.
- κ³μΈ΅ν κ΅¬μ‘°λ‘ λ³΅μ‘ν λ°μ΄ν°λ₯Ό νμνκΈ° μ’λ€.
release = "19.12"
environment = "UNKNOWN"
[metrics]
enabled = true
[apis]
[api.image]
url = "<http://iotd/inmage>"
[api.access]
url = "<http://accesslog/access-log>"
μ€μ κ°μ λ°ννλ API μ€κ³ μ μ£Όμμ¬ν
- μ 체 μ€μ μ 곡κ°νμ§ μλλ€.
- λ―Όκ°ν μ 보λ μ λ ν¬ν¨μν€μ§ μλλ€.
- νκ°λ°μ μ¬μ©μλ§μ΄ μ κ·Όν μ μλλ‘ μλν¬μΈνΈ 보μμ μ€μ νλ€.
- μ€μ APIμ μ¬μ© μ¬λΆλ₯Ό μ€μ ν μ μλλ‘ νλ€.
κΆκΈνμ .
- μ€μ API λ λ¨ νλ²λ λ§λ€μ΄λ³Έμ μ΄ μλ€. μΈμ μ΄λ€ μ΄μ λ‘ λ§λ€μ΄μ μ¬μ©νλκ±°μ§?
- μ ν리μΌμ΄μ λ²μ ( 0.5.2 μ κ°μ) μ 보λ μ€μ API μΈκ°?
- κ·Έλ λ€λ©΄, ν΄λΉ λ²μ μ 보λ μ¬μ©μμκ² κ³΅κ°λλ©΄ μλλμ§?
18.4 λ κ±°μ μ ν리μΌμ΄μ μ μ€μ μ λ΅ μ μ©νκΈ°
- λ κ±°μ μ ν리μΌμ΄μ μ νκ²½ λ³μλ μ€μ νμΌ λ³ν©μ ν΅ν μ€μ ꡬμ±μ μΌλ°μ μΌλ‘ μ§μνμ§ μλλ€.
- λ κ±°μ μ ν리μΌμ΄μ μ νΉμ κ²½λ‘μ μμΉν XML νμΌμ μ€μ νμΌμ μ£Όλ‘ μ¬μ©νλ€.
- λ£¨νΈ λλ ν 리 μΈλΆμ μμΉν μ€μ νμΌμ΄λ νκ²½ λ³μμ κ°μ μ€μ μ λμ ν μλ μλ€.
- μ΄λ₯Ό 컨ν μ΄λμ μ£Όμ λ μ€μ νμΌμ μ ν리μΌμ΄μ μ μ€μ μ λ ₯μ λ§μΆ° λ³ννλ μ ν°λ¦¬ν° λλ μ€ν¬λ¦½νΈλ₯Ό μ΄λ―Έμ§μ ν¬ν¨μμΌ ν΄κ²°ν μ μλ€.
A. 컨ν μ΄λμ μ§μ λ μ€λ²λΌμ΄λ νμΌμ μ½μ΄ λ€μ΄κΈ°.
B. νκ²½ λ³μμμ μ€λ²λΌμ΄λ μ€μ μ μ½μ΄ λ€μ΄κΈ°.
C. μ€λ²λΌμ΄λ μ€μ νμΌκ³Ό νκ²½ λ³μ μ€μ μ λ³ν©νκΈ°. μ΄λ, νκ²½ λ³μ κ°μ΄ μ°μ .
D. λ³ν©λ μ€λ²λΌμ΄λ μ€μ μ 컨ν μ΄λ λ΄ λμ μ€μ νμΌμ μΆκ°.
$ docker container run -d -p 8090:80 -v "$(pwd)/config/dev:/config-override" -e CONFIG_SOURCE_PATH="/config-override/application.properties" diamol/ch18-image-of-the-day
Java μ€μ λ³ν μ νΈλ¦¬ν°μ λΉλ λ° μ€ν
FROM diamol/maven AS builder
RUN mvn package
FROM diamol/maven as utility-builder
WORKDIR /usr/src/utilities
COPY ./src/utilities/ConfigLoader.java .
RUN javac ConfigLoader.java
FROM diamol/openjdk
ENV CONFIG_SOURCE_PATH="" \\
CONFIG_TARGET_PATH="7app/config/application.properties"
CMD java ConfigLoader && \\
java -jar /app/iotd-service-0.1.0.jar
WORKDIR /app
COPY --from=utility-builder /usr/src/utilities/ConfigLoader.java
COPY -from=builder /usr/src/iotd/target/iotd-service-0.1.0.jar
- λ컀 μ΄λ―Έμ§λ₯Ό νμ₯ν΄ κΈ°μ‘΄ μ ν리μΌμ΄μ μ νλμ μ€μ λͺ¨λΈμ λμ ν μ μλ€.
- μ ν리μΌμ΄μ μμ λ‘μ§μ μμ ν΄ μ€μ μ ν리μΌμ΄μ μ΄ μ€νλκΈ° μ μ μνλ μμ μ μνν μ μλ€.
- λ€λ§, ν΄λΉ μμ μΌλ‘ μΈν΄ 컨ν μ΄λ μμκ³Ό μ ν리μΌμ΄μ μ€ν μ¬μ΄μ μκ° κ°κ²©μ΄ μκΈ°λ©°, 컨ν μ΄λκ° μ€ν¨ν νλ₯ λ λμμ§λ€.
- λ°λΌμ, λμ± ν¬μ€ 체ν¬μ μ κ²½μ μ¨μΌ νλ€.
18.5 μ μ°ν μ€μ λͺ¨λΈμ μ΄μ
- κ³μΈ΅λ³ μ€μ λͺ¨λΈμ μ ν리μΌμ΄μ λμ νκ²½λ§λ€ μ‘°κΈμ© λ€λ₯΄κ² νλ©΄μλ λ¨μΌ μ΄λ―Έμ§ μμΉμ μ μ§ν μ μκ² ν΄μ€λ€.
- λ²μ μ λ°λΌ λ¬λΌμ§λ μ€μ μ μ΄λ―Έμ§ ν¬ν¨.
- νκ²½λ³λ‘ λ¬λΌμ§λ μ€μ μ 컨ν μ΄λ νλ«νΌμμ μ 곡νλ μ€λ²λΌμ΄λ νμΌμ ν΅ν΄ μ μ©.
- νκ²½ λ³μλ₯Ό ν΅ν΄ ν΅μ νλ κΈ°λ₯λ³ μ€μ μΆκ°.
- μ΄λ₯Ό ν΅ν΄ μ΄μ νκ²½κ³Ό μ μ¬ν νκ²½ μ¬νμ΄ κ°λ₯νμ¬ μ΄μ νκ²½ μ΄μ λμμ΄ μ¬μμ§λ€.
728x90
λ°μν