Compose: docker-compose.yml์—์„œ ์‰˜ ๋ช…๋ น ์‚ฌ์šฉ

์— ๋งŒ๋“  2016๋…„ 10์›” 27์ผ  ยท  41์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: docker/compose

์•ˆ๋…•ํ•˜์„ธ์š”, docker-compose.yml ํŒŒ์ผ์—์„œ ์‰˜ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?
๋‚ด ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 version: '2'
 services:
   ci:
     image: jenkins
     volumes:
       - ./data:/var/jenkins_home
       - /var/run/docker.sock:/var/run/docker.sock
       - $(command -v docker):/usr/bin/docker
     groupadd:
       - $(stat -c %g /var/run/docker.sock)
     ports:
       - "8080:8080"
       - "50000:50000"

ํ˜„์žฌ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

ERROR: Invalid interpolation format for "volumes" option in service "ci": "${command -v docker}:/usr/bin/docker"
kinquestion

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

์ด๊ฒƒ์€ .... ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด ๋งค์šฐ ์œ ์šฉ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

์•ˆ๋…•ํ•˜์„ธ์š” @zkanda ,

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ง€์›ํ•˜๋Š” ํ•ญ๋ชฉ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ด๊ฒƒ์€ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๊ณ  ๋Œ€์‹  Compose ํŒŒ์ผ ๋‚ด์—์„œ ๋ณ€์ˆ˜ ๋Œ€์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

@ shin- ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค, ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ .env ๋งค์šฐ ์œ ์šฉ ํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.
๊ด€๋ จ ๋ฌธ์„œ : https://docs.docker.com/compose/environment-variables/#/the -env-file

@zkanda ์ด ์ž‘๋™ํ•˜๋„๋ก ํ•ด๋ณธ ์ ์ด .env ํŒŒ์ผ์—์„œ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.

DOCKER_BIN=`which docker`

๊ทธ๋ฆฌ๊ณ  docker-compose.yml

jenkinsmaster:
  build: jenkins-master
  volumes:
    - /var/run/docker.sock:/var/run/docker.sock
    - ${DOCKER_BIN}:/usr/bin/docker
  ports:
    - "50000:50000"

ํ•˜์ง€๋งŒ ๊ณ„์†

Cannot create container for service jenkinsmaster: create `which docker`: "`which docker`" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed.

.env ํŒŒ์ผ์—์„œ ๋ช…๋ น์ด ๋ฌธ์ž์—ด๋กœ ํ•ด์„๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ช…๋ น์€ Compose, .env ๋˜๋Š” ๋‹ค๋ฅธ ๊ณณ์—์„œ ํ™•์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ .... ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด ๋งค์šฐ ์œ ์šฉ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

+1

๋‹ค์Œ์€ ์‚ฌ์šฉ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค. Kafka๋ฅผ ์„ค์ •ํ•  ๋•Œ ํ˜ธ์ŠคํŠธ ์ปดํ“จํ„ฐ์˜ IP๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋ฅผ ์œ„ํ•ด ๋‹ค์Œ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

DOCKER_HOST_IP=$(ifconfig | grep 'inet .*br' | sed -E 's/.*inet (.*) netmask.*/\1/')

ํ™˜๊ฒฝ์—์„œ ํ•ด๋‹น IP๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค. ๋ฏธ๋ฆฌ ์‹คํ–‰ํ•ด์•ผํ•˜๋ฏ€๋กœ ๋” ์ด์ƒ docker-compose up ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŒ€์˜ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ์ด ์‚ฌ์‹ค์„ ์•Œ๋ ค์•ผํ•ฉ๋‹ˆ๋‹ค.

+1

๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ˜„์žฌ ์‚ฌ์šฉ์ž๋ฅผ ๊ฐ€์ ธ ์˜ค๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

services:
  foo:
    image: bar:latest
    user: ${CURRENT_USER-$(id -u):$(id -g)}

๋‹ค๋ฅธ ์‚ฌ์šฉ ์‚ฌ๋ก€๋„ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค ...

๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ๋‚˜๋จธ์ง€ Bash ๊ธฐ๋Šฅ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด Compose์—์„œ ${BAZ-default} ์ž‘๋™ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค ... (๋‚ด๊ฐ€ ์•„๋Š” ํ•œ - ์˜ˆ๋ฅผ ๋“ค์–ด ${VAR/search/replace} ๋กœ ๋Œ€์ฒด๋˜๋Š” Bash์˜ ๋ณ€์ˆ˜ ์กฐ์ž‘ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.)

์˜ˆ @ davi5e ... ๋‚ด๊ฐ€ ์‹œ๋„ํ•œ ๊ฒƒ :

version: "3.7"

services:
  orchestrator:
    build: .
    ports:
      - "2000:2000"
    # Use type host until we can test link
    network_mode: "host"
    environment:
      - NODE_ENV=development
      - LOCAL_USER_ID=${id -u}

@ davi5e ๋˜ ๋‹ค๋ฅธ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋„์ปค ๋ณผ๋ฅจ์„ ๋งŒ๋“ค๊ณ  git ์ €์žฅ์†Œ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์—ฐ๊ฒฐํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์ด ์ ˆ๋Œ€ ๋ชฉ์š•์€ ํŒ€์˜ ๊ฐ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๊ฒฝ๊ณ ํ•ฉ๋‹ˆ๋‹ค.

+1
PLZ๋Š” ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ฝ๋‹ˆ ๋‹ค

+1
๋‚ด ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” "๊ธฐ๋ณธ"ํฌํŠธ์˜ ๊ธฐ๋Šฅ์œผ๋กœ ๊ฒฐ์ •๋˜๋Š” ํฌํŠธ ๋ฒ”์œ„๋ฅผ ๊ฒŒ์‹œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ UID / GID ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐ ๋งค์šฐ ์œ ์šฉ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ Docker๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ์œ„ํ•œ ๊ฑฐ์˜ ํ•„์ˆ˜ ์‚ฌํ•ญ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค (์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ .env ํŒŒ์ผ๋กœ ์„ค์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Œ).

+1

์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜์—ฌ docker๊ฐ€ ์ƒ์„ฑ ํ•œ ์ด๋ฏธ์ง€์— git ํƒœ๊ทธ์™€ ์ปค๋ฐ‹ ํ•ด์‹œ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ๋ ˆ์ด๋ธ” / ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

.env :

GIT_VERSION=$(git describe --always --dirty --abbrev)
OUTER_PORT=6970

docer-complse.yml :

version: '3'
services:
  nginx:
    restart: always
    build:
        context: ./nginx
        labels:
          org.label-schema.schema-version: "1.0"
          org.label-schema.version: "${GIT_VERSION}"
          org.lavel.schema.url: "https://mydocu-server.company.com/vcs/${GIT_VERSION}"
    ports:
      - ${OUTER_PORT}:8080

๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ์…ธ์—์„œ UID ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋ฉด ๋กœ์ปฌ ๊ฐœ๋ฐœ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œ ํ•  ๋•Œ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ์ปฌ ๊ฐœ๋ฐœ ์ด๋ฏธ์ง€๊ฐ€ ๊ณต์œ ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋™๋ฃŒ์™€์˜ uid ์ถฉ๋Œ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

+1

@ con-f-use ๋‚ด ํ…Œ์ŠคํŠธ์˜ ๊ฒฐ๊ณผ๊ฐ€ ์•„๋‹Œ ์‹ค์ œ ๋ช…๋ น์„ ์ „์†กํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ์„ฑ๊ณตํ•œ ์œ ์ผํ•œ ํ•ดํ‚น์€ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋Š” docker compose๋ฅผ ๋ž˜ํ•‘ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

+1

.env ํŒŒ์ผ์—์„œ ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ๋‚ด๋ณด๋‚ด๋ ค๋ฉด TL; DR :

# set the path of .env file here
ENV_FILE="${ENV_FILE:-local.env}"
while IFS= read -r line; do
  export "$line"
done < <( grep --color=never -E -v -e '^#' -e '^[[:space:]]*$' "${ENV_FILE}" )

์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•:

  • ๋ช…๋ น ์ค„์— ์ž…๋ ฅํ•˜๊ณ  Enter ํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ ํ˜„์žฌ ์…ธ ํ™˜๊ฒฝ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

๋˜๋Š”

  • bash ์Šคํฌ๋ฆฝํŠธ๋กœ ์ €์žฅํ•˜๊ณ  ์†Œ์‹ฑ

์ฃผ์˜ ์‚ฌํ•ญ :

  • ์ด๊ฒƒ์„ ์Šคํฌ๋ฆฝํŠธ๋กœ ์ €์žฅํ•˜๊ณ  ์‹คํ–‰ํ•˜๋ฉด ํ˜„์žฌ ์…ธ ํ™˜๊ฒฝ์—์„œ ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ๋งˆ์ˆ ์ฒ˜๋Ÿผ ๋‚ด ๋ณด๋‚ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๊ทธ๊ฒƒ์„ ์†Œ์‹ฑํ•˜๊ฑฐ๋‚˜ ๋ฉ‹์ง„ eval ํ•ฉ๋‹ˆ๋‹ค.
  • (์ข‹์€ ์ผ์ด ์•„๋‹๊นŒ์š”?) $ENV_FILE ์—์„œ ๊ฐ™์€ ์ด๋ฆ„์˜ ๊ธฐ์กด ๋ณ€์ˆ˜๋ฅผ ๋ฎ์–ด ์”๋‹ˆ๋‹ค.

์„ค๋ช… : ์—ฌ๊ธฐ

https://direnv.net/์„ ๋ชจ๋‘ ์ž๋™ํ™”ํ•˜๋ ค๋ฉด direnv๋ฅผ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค.

2019 ๋…„ 6 ์›” 28 ์ผ ๊ธˆ์š”์ผ ์˜คํ›„ 12:57 Sudarshan Wadkar [email protected]
์ผ๋‹ค :

.env ํŒŒ์ผ์—์„œ ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ๋‚ด๋ณด๋‚ด๋ ค๋ฉด TL; DR :

์—ฌ๊ธฐ์— .env ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค.

ENV_FILE = "$ {ENV_ FILE : -local.env }"while IFS = read -r line; ํ•˜๋‹ค
๋‚ด๋ณด๋‚ด๊ธฐ "$ line"์™„๋ฃŒ <<(grep --color = never -E -v -e '^ #'-e '^ [[: space :]] * $' "$ {ENV_FILE}")

์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•:

  • ๋ช…๋ น ์ค„์— ์ž…๋ ฅํ•˜์„ธ์š”.
  • bash ์Šคํฌ๋ฆฝํŠธ๋กœ ์ €์žฅํ•˜๊ณ  ์†Œ์‹ฑ

์ฃผ์˜ ์‚ฌํ•ญ :

  • ์ด๊ฒƒ์„ ์Šคํฌ๋ฆฝํŠธ๋กœ ์ €์žฅํ•˜๊ณ  ์‹คํ–‰ํ•˜๋ฉด ๋งˆ์ˆ ์ฒ˜๋Ÿผ ๋‚ด ๋ณด๋‚ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    ํ˜„์žฌ ์‰˜ ํ™˜๊ฒฝ์˜ ๋ณ€์ˆ˜. ๋‹น์‹ ์€ ๊ทธ๊ฒƒ์„ ์†Œ์‹ฑํ•˜๊ฑฐ๋‚˜ํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค
    ๋ฉ‹์ง„ ํ‰๊ฐ€.
  • (์ข‹์€ ์ผ์ด ์•„๋‹๊นŒ์š”?) ๊ธฐ์กด ๋ณ€์ˆ˜๋ฅผ ๋™์ผํ•œ
    $ ENV_FILE์˜ ์ด๋ฆ„

์„ค๋ช… : ์—ฌ๊ธฐ
https://explainshell.com/explain?cmd=while+IFS%3D+read+-r+line%3B+do+export+%22%24line%22%3B+done+%3C+%3C%28grep+--color%3Dno+ -v + -e + % 27 % 5E % 23 % 27 + -e + % 27 % 5E % 5B % 5B % 3Aspace % 3A % 5D % 5D * % 24 % 27 + % 24 % 7BENV_FILE % 7D % 29

โ€”
์ด ์Šค๋ ˆ๋“œ๋ฅผ ๊ตฌ๋…ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—์ด ๋ฉ”์‹œ์ง€๊ฐ€ ์ „์†ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/docker/compose/issues/4081?email_source=notifications&email_token=AACHRDBQXQZTC5FXTOFL6UTP4XOBJA5CNFSM4CUISSSKYY3PNVWWK3TUL52HS4DFVREXG43VMVBWPZGONMVVXHJKissue,WSZGONMV506677702
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AACHRDGJ6FAQBEDLBSRVS6TP4XOBJANCNFSM4CUISSSA
.

์˜ˆ, direnv ์€ ์ข‹์ง€๋งŒ ํ‰๋ฒ”ํ•œ VAR=VAL ๊ตฌ๋ฌธ์ด์žˆ๋Š” ๊ฐ„๋‹จํ•œ ์ค„์ด์žˆ๋Š” Docker์˜ .env ํŒŒ์ผ์— ์œ ์šฉํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค ( ์ด ๋งํฌ์— ๋”ฐ๋ผ). .env ํŒŒ์ผ์ด ์ €์žฅ์†Œ์— ์ปค๋ฐ‹๋˜๊ณ  ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋‚ด ๋กœ์ปฌ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฑฐ๋‚˜ docker-compose ์—์„œ ์Šคํ…Œ์ด์ง• / ๋ฐฐํฌ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
https://en.wikipedia.org/wiki/Environment_variable
ํ™˜๊ฒฝ์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹Œ ์ฝ”๋“œ๋ฒ ์ด์Šค ...

2019 ๋…„ 6 ์›” 28 ์ผ ๊ธˆ์š”์ผ ์˜คํ›„ 2:04 Sudarshan Wadkar [email protected]
์ผ๋‹ค :

๊ทธ๋ž˜, direnv๋Š” ์ข‹์ง€๋งŒ Docker์™€ ํ•จ๊ป˜ ์œ ์šฉํ• ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์ผ๋ฐ˜ VAR = VAL ๊ตฌ๋ฌธ์ด์žˆ๋Š” ๊ฐ„๋‹จํ•œ ์ค„์ด์žˆ๋Š” .env ํŒŒ์ผ (์ด์— ๋”ฐ๋ผ
https://docs.docker.com/compose/env-file/#syntax-rules ๋งํฌ.) ์•„์ด๋””์–ด
.env ํŒŒ์ผ์ด ์ €์žฅ์†Œ์— ์ปค๋ฐ‹๋˜๊ณ  ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ๋Š”
๋‚ด ๋กœ์ปฌ ๋˜๋Š” docker-compose์—์„œ ์‹คํ–‰ํ•˜์—ฌ ์Šคํ…Œ์ด์ง• / ๋ฐฐํฌ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โ€”
์ด ์Šค๋ ˆ๋“œ๋ฅผ ๊ตฌ๋…ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—์ด ๋ฉ”์‹œ์ง€๊ฐ€ ์ „์†ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/docker/compose/issues/4081?email_source=notifications&email_token=AACHRDCEKOMK2VI3A43QBC3P4XV5BA5CNFSM4CUISSSKYY3PNVWWK3TUL52HS4DFVREXG43VMVBWPZGONMVY40495ZLOPWSZGONMVXH40453JKissue ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AACHRDF3Q3YOZPHUIUZYEPTP4XV5BANCNFSM4CUISSSA
.

์•„, ๊ทธ๋ž˜.

docker-compose up ์‹คํ–‰ํ•˜๋ฉด .env ํŒŒ์ผ์ด ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ๋ฐ”๋€๋‹ค ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋™์ผํ•œ .env ํŒŒ์ผ์„ ์ง„์‹ค์˜ ์†Œ์Šค๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ ๊ฐœ๋ฐœ ์ธ์Šคํ„ด์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค ( docker-compose ๋„์›€์—†์ด). ์˜ˆ, .env ํŒŒ์ผ์˜ ํ•ด๋‹น ์ค„์€ ์‹ค์ œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ ๋ฐฐํฌ ํ•  ๋•Œ ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜๋กœ ๋ฐ”๋€๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ direnv ์ด ์–ด๋–ป๊ฒŒ ๋„์›€์ด ๋ ์ง€ ์•„์ง ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ env var์— ํ• ๋‹นํ•˜๋Š” ์•”ํ˜ธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ช…๋ น์„ ๋„ฃ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด๋Ÿฐ ์‹์œผ๋กœ pasword๋Š” ์‹ค์ œ๋กœ .env ๋˜๋Š” docker-compose.yml ํŒŒ์ผ๋กœ ์ž‘์„ฑ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋งŽ์€ ๋ณด์•ˆ ๊ด€๋ จ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ํฐ ์ด์ ์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

+1

+1

+1์€ ์†”๋ฃจ์…˜์„ ์ง€๋‚˜์น˜๊ฒŒ ๋ณต์žกํ•˜๊ฒŒํ•˜์ง€ ์•Š๊ณ  uid ๋ฐ gid ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

```
/ _ /
(oo)

^ <```

+1 ์œ„์—์„œ ์–ธ๊ธ‰ ํ•œ๋Œ€๋กœ git ๋ธŒ๋žœ์น˜๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  compose ํŒŒ์ผ์— ์ปค๋ฐ‹ํ•˜์—ฌ ๊ฒฐ๊ตญ dockerfile๋กœ ์ด๋™ ํ•œ ๋‹ค์Œ ๋‹ค๋‹จ๊ณ„ ๋„์ปค ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์˜ ๋‹จ๊ณ„์—์„œ ๋นŒ๋“œ ๋œ jar์˜ ๋งค๋‹ˆํŽ˜์ŠคํŠธ์— ๋ฒ„์ „์œผ๋กœ ์ถ”๊ฐ€๋˜๋Š” ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. .

  gateway:
    image: name
    build:
      context: ./project
      dockerfile: build/Dockerfile
      args:
        - GIT_COMMIT=${$(git rev-list -1 HEAD):-unspecified}
        - GIT_DATE=${$(git log -1 --date=short --pretty=format:%ct):-unspecified}

๋”ฐ๋ผ์„œ ํ˜„์žฌ ๋‚ด compose ํŒŒ์ผ์˜ 7 ๊ฐœ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด 7x2 ํ™˜๊ฒฝ์„ ์„ค์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์Šฌํผ.

@ shin- ๊ธฐ๋Šฅ ์š”์ฒญ์œผ๋กœ ๋‹ค์‹œ ์—ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ข‹์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋ฉฐ ์ด์— ๋Œ€ํ•œ ํ™•์‹คํ•œ ํ•„์š”์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

+1 ์•„๋งˆ๋„ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ ์ธ์ ‘ํ•œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์žฌ๋ถ€ํŒ…ํ•˜๋ ค๋ฉด ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ๋„์ปค ์—”์ง„์„ ์‚ฌ์šฉํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค. Letsencrypt ์ธ์ฆ์„œ๊ฐ€ ๋งŒ๋ฃŒ๋˜์—ˆ์ง€๋งŒ ๊ฐฑ์‹  ํ›„ NGinx ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ. ๋ฌธ์ œ๋Š” ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ docker-compose์—๊ฒŒ์ด ์ปจํ…Œ์ด๋„ˆ ๊ทธ๋ฃน์˜ ํ”„๋กœ์ ํŠธ ์ด๋ฆ„์ด ๋ฌด์—‡์ธ์ง€ ์–ด๋–ป๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? PROJECT=(basedir ~+) ์ง€๊ธˆ์€ ์ˆ˜๋™์œผ๋กœ ์ฝ”๋”ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ๊ธฐ๋Šฅ ์š”์ฒญ์— +1
๋˜ ๋‹ค๋ฅธ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” cli / http (์˜ˆ : ๋ณผํŠธ, 1Password)์—์„œ ๋น„๋ฐ€์„ ๊ฐ€์ ธ์™€ ํ™˜๊ฒฝ์— ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ฆ‰

...
    environment:
      - SERVICE_USERNAME=$(vault kv get -field=username kv/service/credentials)
      - SERVICE_PASSWORD=$(vault kv get -field=password kv/service/credentials)
...

lastpass ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ œ์™ธํ•˜๊ณ ๋Š”

...
     environment:
         - TRPASSWD=$(lpass show --password Transmission)
....

+1

+1

@ shin- ๊ธฐ๋Šฅ ์š”์ฒญ์œผ๋กœ ๋‹ค์‹œ ์—ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ข‹์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์€ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋ฉฐ ์ด์— ๋Œ€ํ•œ ํ™•์‹คํ•œ ํ•„์š”์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@ four43 , @ shin- ๋˜๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋‹ซํžŒ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์˜๊ฒฌ์„ ์ฝ์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ๊ด€์‹ฌ์„ ๋Œ๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ํ•˜๋‚˜๋ฅผ ์—ด์–ด ๋ณผ๊นŒ์š”?

docker-compose ํŒŒ์ผ์˜ ๋ณ€์ˆ˜ ํ™•์žฅ์€ ๋งค์šฐ ์œ ์šฉํ•œ ๊ธฐ๋Šฅ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค ...

+1

@esale- ๋„ค, ๊ทธ๊ฒŒ ์ข€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ด ์‚ฌ๊ฑด์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ DSL์„ ๋„ˆ๋ฌด ๋งŽ์ด ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๊ทธ ์‹œ์ ์—์„œ ๋‹ค๋ฅธ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋„์ปค ์ž‘์„ฑ ํŒŒ์ผ์„ ํ…œํ”Œ๋ฆฟํ•ฉ๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” ์šฐ๋ ค๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ๋„˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

.env ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช…๋ น์œผ๋กœ ์…ธ ์ถœ๋ ฅ์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

eval "echo \"$(cat .env.example)\"" > .env

.env.example ํŒŒ์ผ ์˜ˆ

DOCKER_BIN=$(which docker)
DOCKER_COMPOSE_BIN=$(which docker-compose)

.env ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ

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