Compose: 이전 λ³Όλ₯¨μ„ μž¬μ‚¬μš©ν•˜μ§€ μ•Šκ³ `docker-compose up --force-recreate`ν•˜λŠ” 방법

에 λ§Œλ“  2015λ…„ 10μ›” 02일  Β·  23μ½”λ©˜νŠΈ  Β·  좜처: docker/compose

docker-compose 1.4.2 및 docker 1.8.2 μ‚¬μš©
첫 번째 λ³Όλ₯¨ e583c6a8 ... 5a93788a0이 μž¬μ‚¬μš©λ˜μ—ˆμŒμ„ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.

 $ sudo docker-compose up -d --force-recreate
   Recreating remotetransmission_torrent_1...

 $ docker inspect remotetransmission_torrent_1 | grep volumes
   "/mnt/docker/volumes/e583c6a87437a5b4b1af50ee2693bd3e5dce574ec72d60dce1311215a93788a0/_data:/home/transmission/.config/transmission-daemon:rw",
   "/mnt/docker/volumes/cefce79850d7162f4f99541559c2dfc7315c83db717a7a5953118bd3c4b273e0/_data:/home/transmission/Downloads:rw"
   "Source": "/mnt/docker/volumes/e583c6a87437a5b4b1af50ee2693bd3e5dce574ec72d60dce1311215a93788a0/_data",
   "Source": "/mnt/docker/volumes/cefce79850d7162f4f99541559c2dfc7315c83db717a7a5953118bd3c4b273e0/_data",

 $ sudo docker-compose up -d --force-recreate
   Recreating remotetransmission_torrent_1...

 $ docker inspect remotetransmission_torrent_1 | grep volumes
   "/mnt/docker/volumes/e583c6a87437a5b4b1af50ee2693bd3e5dce574ec72d60dce1311215a93788a0/_data:/home/transmission/.config/transmission-daemon:rw",
   "/mnt/docker/volumes/cefce79850d7162f4f99541559c2dfc7315c83db717a7a5953118bd3c4b273e0/_data:/home/transmission/Downloads:rw"
   "Source": "/mnt/docker/volumes/e583c6a87437a5b4b1af50ee2693bd3e5dce574ec72d60dce1311215a93788a0/_data",
   "Source": "/mnt/docker/volumes/cefce79850d7162f4f99541559c2dfc7315c83db717a7a5953118bd3c4b273e0/_data",

μƒˆ λ³Όλ₯¨μ„ λ§Œλ“€λ €λ©΄ stop λ‹€μŒμ— rm 을 (λ₯Ό) κ°•μš”ν–ˆμŠ΅λ‹ˆλ‹€.

 $ sudo docker-compose stop 
   Stopping remotetransmission_torrent_1... done

 $ sudo docker-compose rm
   Going to remove remotetransmission_torrent_1
   Are you sure? [yN] y
   Removing remotetransmission_torrent_1... done

 $ sudo docker-compose up -d --force-recreate
   Creating remotetransmission_torrent_1...

 $ docker inspect remotetransmission_torrent_1 | grep volumes
   "Source": "/mnt/docker/volumes/c5bb9a8f7b68c762c42e9c0ee92afbca3aa0d7ff9d09aaf45fd260f6fc663ec9/_data",
   "Source": "/mnt/docker/volumes/9dcce8440bafc8893e07352111d1aefb625c36df10da6dc4eaa593220266ea31/_data",

_
stop/rm 방법보닀 더 쒋은 방법이 μžˆμŠ΅λ‹ˆκΉŒ?

areup kindocs kinquestion

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

이 정책은 docker λͺ¨λ²” 사둀λ₯Ό μœ„λ°˜ν•˜λŠ” κ²ƒμœΌλ‘œ 보이며 μ»¨ν…Œμ΄λ„ˆ μž¬μƒμ„±μœΌλ‘œ 인해 μƒνƒœκ°€ λˆ„μΆœλ˜λŠ” 이유λ₯Ό ν•΄κ²°ν•˜λŠ” 데 κ³¨μΉ«κ±°λ¦¬κ°€λ˜μ—ˆμŠ΅λ‹ˆλ‹€. λ‚΄κ°€ dockerμ—κ²Œ λ‹€μ‹œ μƒμ„±ν•˜λΌκ³  말할 λ•Œ "μ»¨ν…Œμ΄λ„ˆ 싀행에 일뢀 데이터λ₯Ό μœ μ§€ν•˜μ§€λ§Œ μ»¨ν…Œμ΄λ„ˆμ—μ„œ ν”„λ‘œμ„ΈμŠ€λ₯Ό λ‹€μ‹œ μ‹œμž‘"ν•œλ‹€λŠ” μ˜λ―ΈλŠ” μ•„λ‹™λ‹ˆλ‹€. 그것은 땅을 포μž₯ν•˜κ³  λ‹€μ‹œ μ‹œμž‘ν•˜λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€. λ³Όλ₯¨μ„ μ €μž₯ν•˜λ €λ©΄ λͺ…μ‹œ 적으둜 λ³Όλ₯¨μ„ λ§ˆμš΄νŠΈν•©λ‹ˆλ‹€. μ–΄λ–€ μ’…λ₯˜μ˜ μžλ™ 마운트 된 λ³Όλ₯¨λ„ μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰ λ™μ•ˆ 지속될 κ²ƒμœΌλ‘œ κΈ°λŒ€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λͺ¨λ“  23 λŒ“κΈ€

stop/rm 이 μ˜¬λ°”λ₯Έ λ°©λ²•μž…λ‹ˆλ‹€. λ³Όλ₯¨μ˜ λ°μ΄ν„°λŠ” μ€‘μš” ν•  수 μžˆμœΌλ―€λ‘œ μ‹€μˆ˜λ‘œ μ œκ±°ν•˜κΈ° μ–΄λ ΅κ²Œ λ§Œλ“€κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

μš°λ¦¬λŠ” 이것을 μ’€ 더 잘 λ¬Έμ„œν™” ν•  μˆ˜μžˆμ„ κ²ƒμž…λ‹ˆλ‹€.

이 정책은 docker λͺ¨λ²” 사둀λ₯Ό μœ„λ°˜ν•˜λŠ” κ²ƒμœΌλ‘œ 보이며 μ»¨ν…Œμ΄λ„ˆ μž¬μƒμ„±μœΌλ‘œ 인해 μƒνƒœκ°€ λˆ„μΆœλ˜λŠ” 이유λ₯Ό ν•΄κ²°ν•˜λŠ” 데 κ³¨μΉ«κ±°λ¦¬κ°€λ˜μ—ˆμŠ΅λ‹ˆλ‹€. λ‚΄κ°€ dockerμ—κ²Œ λ‹€μ‹œ μƒμ„±ν•˜λΌκ³  말할 λ•Œ "μ»¨ν…Œμ΄λ„ˆ 싀행에 일뢀 데이터λ₯Ό μœ μ§€ν•˜μ§€λ§Œ μ»¨ν…Œμ΄λ„ˆμ—μ„œ ν”„λ‘œμ„ΈμŠ€λ₯Ό λ‹€μ‹œ μ‹œμž‘"ν•œλ‹€λŠ” μ˜λ―ΈλŠ” μ•„λ‹™λ‹ˆλ‹€. 그것은 땅을 포μž₯ν•˜κ³  λ‹€μ‹œ μ‹œμž‘ν•˜λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€. λ³Όλ₯¨μ„ μ €μž₯ν•˜λ €λ©΄ λͺ…μ‹œ 적으둜 λ³Όλ₯¨μ„ λ§ˆμš΄νŠΈν•©λ‹ˆλ‹€. μ–΄λ–€ μ’…λ₯˜μ˜ μžλ™ 마운트 된 λ³Όλ₯¨λ„ μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰ λ™μ•ˆ 지속될 κ²ƒμœΌλ‘œ κΈ°λŒ€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

싀행간에 데이터λ₯Ό μœ μ§€ν•˜λŠ” 것이 μ‹€μ œλ‘œ λ³Όλ₯¨μ„ μ‚¬μš©ν•˜λŠ” μœ μΌν•œ μ΄μœ μž…λ‹ˆλ‹€. 영ꡬ 데이터λ₯Ό μ›ν•˜μ§€ μ•ŠλŠ” 경우 λ³Όλ₯¨μ— μ €μž₯ν•˜λŠ” μ΄μœ λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?

λ³Όλ₯¨μ„ μ„€μ •ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ‚΄ docker-compose.yml λ³Όλ₯¨μ΄ μ„€μ •λ˜μ–΄ μžˆμ§€ μ•ŠμœΌλ©° λ³Όλ₯¨μ„ μ—°κ²°ν•˜κΈ° μœ„ν•΄ docker-compose.yml 에 아무것도 μ „λ‹¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λͺ…λ Ή:

docker-compose up --force-recreate --abort-on-container-exit --build foo

docker-compose.yml :

version: '2'
services:
  foo:
    build:
      context: .
      dockerfile: src/integration/foo/Dockerfile
    ports:
      - "3306:3306"
      - "33060:33060"

Dockerfile :

FROM mysql:5.7

COPY schema/foo/migration.sql /data/db_schema.sql
COPY src/integration/foo/create_test_db.sh /docker-entrypoint-initdb.d/create_test_db.sh
ENV MYSQL_ALLOW_EMPTY_PASSWORD true

EXPOSE 3306 33060

create_test_db.sh :

#!/bin/bash
set -e
mysql --no-defaults -u root -e "drop database if exists agent_state; create database foo"
mysql --no-defaults -u root foo < "/data/db_schema.sql"

μœ„λ₯Ό μ‹€ν–‰ν•˜λ©΄ DB에 λͺ‡ 가지 λ‚΄μš©μ„ μž‘μ„±ν•œ λ‹€μŒ SIG_INTλ₯Ό μž‘μ„±ν•œ λ‹€μŒ λͺ…령을 λ‹€μ‹œ μ‹€ν–‰ν•˜λ©΄ DB에 넣은 데이터가 μ‹€ν–‰λ˜λŠ” λ™μ•ˆ μœ μ§€λ©λ‹ˆλ‹€.

그것은 MySQL μ΄λ―Έμ§€μ˜ λ¬Έμ œμž…λ‹ˆλ‹€. λ² μ΄μŠ€μ— λ³Όλ₯¨μ„ λ§Œλ“­λ‹ˆλ‹€.
μ˜μƒ. λ‹€λ₯Έ MySQL을 μ‚¬μš©ν•˜μ—¬ 문제λ₯Ό ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
이미지λ₯Ό μ‚¬μš©ν•˜κ±°λ‚˜ 데이터에 λŒ€ν•΄ λ‹€λ₯Έ 경둜λ₯Ό μ‚¬μš©ν•˜λ„λ‘ κ°•μ œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

2016 λ…„ 10 μ›” 19 일 μ˜€ν›„ 6μ‹œ 36 뢄에 "Micah Zoltu" [email protected]이 μž‘μ„±ν–ˆμŠ΅λ‹ˆλ‹€.

λ³Όλ₯¨μ„ μ„€μ •ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ‚΄ docker-compose.yml에 아무것도 μ—†μŠ΅λ‹ˆλ‹€.
λ³Όλ₯¨ μ„€μ • 및 docker-compose.yml에 아무것도 μ „λ‹¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
λ³Όλ₯¨μ„ μ—°κ²°ν•˜μ‹­μ‹œμ˜€.

λͺ…λ Ή:

docker-compose up --force-recreate --abort-on-container-exit --build foo

docker-compose.yml :

버전 : '2'
μ„œλΉ„μŠ€:
foo :
짓닀:
μ»¨ν…μŠ€νŠΈ :.
dockerfile : src / integration / foo / Dockerfile
포트 :
- '3306 : 3306'
- '33060 : 33060'

Dockerfile :

mysql : 5.7μ—μ„œ

COPY schema / foo / migration.sql /data/db_schema.sql
볡사 src / integration / foo / create_test_db.sh /docker-entrypoint-initdb.d/create_test_db.sh
ENV MYSQL_ALLOW_EMPTY_PASSWORD true

λ…ΈμΆœ 3306 33060

create_test_db.sh :

! / bin / bash

-e μ„€μ •
mysql --no-defaults -u root -e "agent_stateκ°€ μ‘΄μž¬ν•˜λŠ” 경우 λ°μ΄ν„°λ² μ΄μŠ€ μ‚­μ œ; λ°μ΄ν„°λ² μ΄μŠ€ foo 생성"
mysql --no-defaults -u root foo < "/data/db_schema.sql"

μœ„λ₯Ό μ‹€ν–‰ν•˜λ©΄ DB에 λͺ‡ 가지 λ‚΄μš©μ„ μž‘μ„±ν•œ λ‹€μŒ SIG_INTλ₯Ό μž‘μ„±ν•œ λ‹€μŒ
λͺ…령을 λ‹€μ‹œ μ‹€ν–‰ν•˜λ©΄ DB에 넣은 데이터가 μ‹€ν–‰λ˜λŠ” λ™μ•ˆ μœ μ§€λ©λ‹ˆλ‹€.

β€”
λŒ“κΈ€μ„ λ‹¬μ•˜ κΈ° λ•Œλ¬Έμ— μˆ˜μ‹  ν•œ κ²ƒμž…λ‹ˆλ‹€.
이 이메일에 직접 λ‹΅μž₯ν•˜κ³  GitHubμ—μ„œ ν™•μΈν•˜μ„Έμš”.
https://github.com/docker/compose/issues/2127#issuecomment -254986952,
λ˜λŠ” μŠ€λ ˆλ“œ μŒμ†Œκ±°
https://github.com/notifications/unsubscribe-auth/AAa_RG_pJj0i-OSCfcBlG__8ToFDtGKMks5q1sWlgaJpZM4GHruC
.

흠, 이것은 도컀 μ»¨ν…Œμ΄λ„ˆμ— λŒ€ν•œ λ‚˜μ˜ 이해λ₯Ό μœ„λ°˜ν•©λ‹ˆλ‹€. ν˜ΈμŠ€νŠΈμ— 경둜λ₯Ό μ œκ³΅ν•˜μ§€ μ•Šκ³  λ³Όλ₯¨μ„ λ§ˆμš΄νŠΈν•˜λŠ” 방법은 λ¬΄μ—‡μž…λ‹ˆκΉŒ? λ‚΄ μ΄ν•΄λŠ” λ³Όλ₯¨μ„ λͺ…μ‹œ 적으둜 λ§ˆμš΄νŠΈν•˜μ§€ μ•ŠλŠ” ν•œ 도컀 μ»¨ν…Œμ΄λ„ˆκ°€ μΌμ‹œμ μ΄λΌλŠ” κ²ƒμž…λ‹ˆκΉŒ?

λ³Όλ₯¨μ—λŠ” 호슀트 κ²½λ‘œκ°€ ν•„μš”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ„Έ μ’…λ₯˜μ˜ λ³Όλ₯¨μ΄ μžˆμŠ΅λ‹ˆλ‹€.

  • 호슀트 λ°”μΈλ“œ 마운트 ( -v /host:/container )
  • λͺ…λͺ… 된 λ³Όλ₯¨ ( -v name:/container , docker volume create 생성됨)
  • 읡λͺ… λ³Όλ₯¨ ( -v /container λ˜λŠ” VOLUME λ‚΄λΆ€ Dockerfile )

mysql μ΄λ―Έμ§€λŠ” 읡λͺ… λ³Όλ₯¨μ„ μ‚¬μš©ν•©λ‹ˆλ‹€. λŸ°νƒ€μž„μ— μ»¨ν…Œμ΄λ„ˆμ˜ ν•΄λ‹Ή κ²½λ‘œμ— λŒ€ν•΄ λ‹€λ₯Έ λ³Όλ₯¨μ„ μ‚¬μš©ν•˜λ„λ‘ μ»¨ν…Œμ΄λ„ˆμ— μ§€μ‹œ ν•  수 μžˆμ§€λ§Œ 그렇지 μ•Šμ€ 경우 읡λͺ… λ³Όλ₯¨μ΄ μ—¬μ „νžˆ μ‘΄μž¬ν•©λ‹ˆλ‹€.

읡λͺ… λ³Όλ₯¨μ€ 크지 μ•ŠμŠ΅λ‹ˆλ‹€. 그것듀은 μ„Έ 가지 쀑 κ°€μž₯ 였래된 것이며 κ·Έλ“€μ˜ ν–‰λ™μ˜ λŒ€λΆ€λΆ„μ€ 이전 λ²„μ „κ³Όμ˜ ν˜Έν™˜μ„±μ„ μœ„ν•΄μ„œλ§Œ μœ μ§€λ˜λŠ” λ ˆκ±°μ‹œ λ¬Όκ±΄μž…λ‹ˆλ‹€.

적어도 일뢀 λͺ…λ Ή 쀄 μ˜΅μ…˜ a la "--recreate-volumes"κ°€ 쒋을 κ²ƒμž…λ‹ˆλ‹€ ...

μ’‹μŠ΅λ‹ˆλ‹€, μ—¬λŸ¬λΆ„, 여기에 생각해 λ³Ό κ²½μš°κ°€ μžˆμŠ΅λ‹ˆλ‹€ :

1) λ‚΄ Rails 곡개 디렉토리λ₯Ό nginx μ»¨ν…Œμ΄λ„ˆμ— λ‹€μ‹œ λ§ˆμš΄νŠΈν•˜μ—¬ 일뢀 정적 ν•­λͺ©μ„ nginxμ—μ„œ 직접 제곡 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
2) "읡λͺ…"(ν˜ΈμŠ€νŠΈμ— λ§ˆμš΄νŠΈλ˜μ§€ μ•Šκ³  이름이 μ§€μ •λ˜μ§€ μ•ŠμŒ) λ³Όλ₯¨μ„ / usr / local / app / app / public에 ν• λ‹Ήν•˜κ³  "volumes_from"을 톡해 nginx에 κ³΅μœ ν•©λ‹ˆλ‹€.
3) "곡개"λ‚΄μš©μ€ 이미지 λΉŒλ“œμ—μ„œ 자주 λ³€κ²½λ©λ‹ˆλ‹€-μ΅œμƒμœ„ 파일뿐만 μ•„λ‹ˆλΌ ν•˜μœ„ λ””λ ‰ν† λ¦¬μ˜ 일뢀 파일 (μ€‘μš” 함)

ν˜„μž¬ μ»¨ν…Œμ΄λ„ˆλ₯Ό λ‹€μ‹œ λ§Œλ“€λ©΄ "곡개"의 이전 λ²„μ „μ΄λ©λ‹ˆλ‹€. μ΄λ―Έμ§€μ˜ λ‚΄μš©μ€ λ¬΄μ‹œλ©λ‹ˆλ‹€. 예, DockerλŠ” λˆ„λ½ 된 νŒŒμΌμ„ 읡λͺ… λ³Όλ₯¨μ— λ³΅μ‚¬ν•΄μ•Όν•˜μ§€λ§Œ λ‹€μ–‘ν•œ 이유둜 항상 λ°œμƒν•˜μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€ (ν•˜μœ„ 디렉터리 ꡬ쑰에 λŒ€ν•œ 심측 검사가 μ—†λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€).

κ·Έλž˜μ„œ μ €λŠ” "stop-rm-up"μ‹œν€€μŠ€ (ν”„λ‘œλ•μ…˜μ—μ„œλŠ” 그닀지 νŽΈλ¦¬ν•˜μ§€ μ•ŠμŒ)λ₯Ό μˆ˜ν–‰ν•˜κ±°λ‚˜ λ³„λ„μ˜ 디렉토리λ₯Ό 곡유 λ³Όλ₯¨μœΌλ‘œ μ‚¬μš©ν•˜κ³  μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ»¨ν…Œμ΄λ„ˆ μ‹œμž‘μ—μ„œ λͺ…μ‹œ 적으둜 'rsync'λ₯Ό ν˜ΈμΆœν•˜μ—¬ μ±„μš°κ±°λ‚˜ μ—…λ°μ΄νŠΈν•΄μ•Όν•©λ‹ˆλ‹€.

읡λͺ…μ˜ λ³Όλ₯¨μ„ λΆ€λͺ¨ μ»¨ν…Œμ΄λ„ˆμ™€ ν•¨κ»˜ λ³΄λ‚΄λŠ” 방법이 μžˆλ‹€λ©΄ 큰 κ°œμ„ μ΄ 될 κ²ƒμž…λ‹ˆλ‹€.

μ½”λ“œ (λ˜λŠ” 정적 μžμ‚°)에 λ³Όλ₯¨μ„ μ‚¬μš©ν•˜μ§€ λ§ˆμ‹­μ‹œμ˜€. λ³Όλ₯¨μ€ 배포간에 λ³΄μ‘΄ν•˜λ €λŠ” 데이터λ₯Όμœ„ν•œ κ²ƒμœΌλ‘œ μ—¬κΈ°μ—μ„œ μ›ν•˜λŠ” 것과 λ°˜λŒ€μž…λ‹ˆλ‹€. 정적 μžμ‚°μœΌλ‘œ nginx 이미지λ₯Ό λΉŒλ“œν•˜κ±°λ‚˜μ΄λ₯Ό ν¬ν•¨ν•˜λŠ” 일뢀 μ›Ή μ„œλ²„ μ»¨ν…Œμ΄λ„ˆλ₯Ό ν”„λ‘μ‹œν•˜μ‹­μ‹œμ˜€.

관점에 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€! λ‚˜λŠ” 아직이 κ΄€μ μ—μ„œ μƒκ°ν•˜μ§€ μ•Šμ•˜λ‹€.

(아직 μ§„ν™”ν•˜λŠ”) Docker μ•„ν‚€ν…μ²˜μ˜ κ°œλ…μ  문제 쀑 ν•˜λ‚˜ 인 것 κ°™μŠ΅λ‹ˆλ‹€. μ§€κΈˆκΉŒμ§€ 데이터 λ³Όλ₯¨ κ°œλ… (예 : "데이터 μ»¨ν…Œμ΄λ„ˆ"μ—μ„œ "λͺ…λͺ… 된 λ³Όλ₯¨"으둜)의 진화λ₯Ό λ³΄μ•˜μ§€λ§Œ 아직 μ™„λ£Œλ˜μ§€ μ•Šμ•˜μ„ κ²ƒμž…λ‹ˆλ‹€.

https://docs.docker.com/engine/tutorials/dockervolumes/#/data -volumesλ₯Ό μ‚΄νŽ΄λ³΄λ©΄ λŒ€λΆ€λΆ„μ˜ μ„€λͺ… 된 이점 (AUFS 우회, 곡유)이 λ°˜λ“œμ‹œ 데이터 지속성 ( 원본이 λ””μžμΈ 된 λ³Όλ₯¨).

λ”°λΌμ„œ μ €λ₯Ό ν¬ν•¨ν•œ μ‚¬λžŒλ“€μ΄ μ›λž˜ λͺ©μ μ„ λ„˜μ–΄μ„œ λ‹€μ–‘ν•œ λ°©μ‹μœΌλ‘œ λ³Όλ₯¨μ„ μ‚¬μš©ν•˜λ €κ³ ν•˜λŠ” 것은 λ†€λΌμš΄ 일이 μ•„λ‹™λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ λ§Žμ€ λͺ…μ‹œ 적 볡사없이 ν•œ μ»¨ν…Œμ΄λ„ˆμ—μ„œ λ‹€λ₯Έ μ»¨ν…Œμ΄λ„ˆλ‘œ μž„μ‹œ λ˜λŠ” 이미지 μ œμ–΄ 데이터λ₯Ό κ³΅μœ ν•©λ‹ˆλ‹€.

μ–Έμ  κ°€λŠ” μΌκ΄€λœ ν‘œμ€€ 방법을 μ•Œμ•„λ‚Ό κ²ƒμž…λ‹ˆλ‹€. :) μ§€κΈˆκΉŒμ§€ μœ„μ—μ„œ μ„€λͺ…ν•œ 맀우 κ°„λ‹¨ν•œ ν•΄κ²° 방법을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄μƒμ μ΄μ§€λŠ” μ•Šμ§€λ§Œ μ•„ν‚€ν…μ²˜ κΈ°λŒ€μΉ˜κ°€ μ μ ˆν•˜κ²Œ μ„€μ •λ˜λŠ” ν•œ ν—ˆμš© κ°€λŠ₯ν•©λ‹ˆλ‹€.

λ‹€μ‹œ ν•œ 번, κ·€ν•˜μ˜ 응닡, μ„€λͺ… 및 κ·€ν•˜μ˜ ν›Œλ₯­ν•œ μž‘μ—…μ— κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€!

λ‚˜λŠ” 였늘이 문제λ₯Ό λ§Œλ‚¬μœΌλ©° 여기에 ν›Œλ₯­ν•œ μ„€λͺ…을 ν•΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.이 문제λ₯Ό μ΄ν•΄ν•˜λŠ” 데 ν™•μ‹€νžˆ λ„μ›€μ΄λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

μ €μ—κ²Œ κ°€μž₯ ν˜Όλž€μŠ€λŸ¬μš΄ 점은 dockerfile의 VOLUME νƒœκ·Έλ‘œ 인해 μΌκ΄€λœ 읡λͺ… λ³Όλ₯¨μ΄ μƒμ„±λœλ‹€λŠ” 사싀을 μ΄ν•΄ν•˜κ³ μžˆμ—ˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” λ¬Έμ„œμ—μ„œ 그것을 놓쳀을 μˆ˜λ„ μžˆμ§€λ§Œ 그것에 λŒ€ν•œ 언급을 찾을 수 μ—†μ—ˆμŠ΅λ‹ˆλ‹€.

λΏ‘λΏ‘

@ hleb-rubanauμ—μ„œ μ–ΈκΈ‰ν–ˆλ“―μ΄. Rails와 Nginx둜 단일 μ»¨ν…Œμ΄λ„ˆλ₯Ό μ‹€ν–‰ν•˜λŠ” 것이 ν•΄κ²°μ±…μž…λ‹ˆκΉŒ? (예 : https://docs.docker.com/engine/admin/multi-service_container/?)

λͺ¨λ²” 사둀λ₯Ό μœ„λ°˜ν•΄μ•Όν•©λ‹ˆκΉŒ ( "각 μ»¨ν…Œμ΄λ„ˆμ—λŠ”
") 단지 μ„œλΉ™ μžμ‚°μ„ μœ„ν•΄? :(

κ΄€μ‹¬μžˆλŠ” μ‚¬λžŒλ“€μ„ μœ„ν•΄ λ‹€μŒκ³Ό 같이 λλ‚¬μŠ΅λ‹ˆλ‹€.

1) λ‚΄ μ„€μ •μ—μ„œ μ§€κΈˆμ€ 항상 λ°”μΈλ“œ 마운트 (호슀트 마운트) λ³Όλ₯¨μ„ μ‚¬μš©ν•©λ‹ˆλ‹€. 읡λͺ… 및 λͺ…λͺ… 된 λ³Όλ₯¨μ—λŠ” κ³ λ €ν•˜κΈ°μ—λŠ” λ„ˆλ¬΄ λ§Žμ€ 특수 / λͺ…λ°±ν•œ / 쑰건뢀 / μΌκ΄€λ˜μ§€ μ•Šμ€ / κ°€μ§œ 논리가 μžˆμŠ΅λ‹ˆλ‹€. 예, 각 μœ ν˜•μ˜ 수λͺ…μ£ΌκΈ° 및 관리에 λŒ€ν•œ μ„ΈλΆ€ 사항을 μ΄ν•΄ν•˜λŠ” 것은 μ‰½μ§€λ§Œ λͺ¨λ“  κ΄€λ ¨μ—†λŠ” 차이점에 λŒ€ν•΄ κ±±μ •ν•˜μ§€ μ•Šμ„ λ•Œ μ•„ν‚€ν…μ²˜μ— λŒ€ν•΄ μƒκ°ν•˜λŠ” 것이 더 μ‰½λ‹€λŠ” 것을 μ•Œμ•˜μŠ΅λ‹ˆλ‹€. λΆ„μ‚° FS의 경우 GlusterλŠ” 잘 μž‘λ™ν•©λ‹ˆλ‹€ (도컀 κ΄€μ μ—μ„œ μ—¬μ „νžˆ λ°”μΈλ“œ 마운트 됨).

2) 곡유 λ³Όλ₯¨μ€ λ°”μΈλ“œ 마운트 된 λ³Όλ₯¨μ΄λ©° μžμ‚°μ΄ 이미지에 μ €μž₯λ˜λŠ” 디렉토리가 μ•„λ‹™λ‹ˆλ‹€ . μ‹œμž‘μ‹œ (μ§„μž… μ μ—μ„œ) 둜컬 rsyncλ₯Ό μ‹€ν–‰ν•˜μ—¬ 이미지 λ””λ ‰ν„°λ¦¬μ˜ μžμ‚°μ΄ λ°”μΈλ“œ 마운트 된 곡유 μŠ€ν† λ¦¬μ§€ 경둜둜 볡사 / 재 λ™κΈ°ν™”λ©λ‹ˆλ‹€.

κ°μ‚¬ν•©λ‹ˆλ‹€ @ hleb-rubanau

μ–΄μ¨Œλ“  RancherOS와 같은 일뢀 μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ 도ꡬ가 μ΄λŸ¬ν•œ λ³Όλ₯¨ ꡬ성을 μ§€μ›ν•˜λŠ”μ§€ λ˜λŠ” ν™•μž₯μ„μœ„ν•œ μ˜¬λ°”λ₯Έ 방법인지 ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. κ²°κ΅­ docker둜 λ°°ν¬ν•˜κΈ°κ°€ 더 μ–΄λ ΅μŠ΅λ‹ˆλ‹€ ...

읡λͺ… λ³Όλ₯¨μ„ μ‚¬μš©ν•˜κ³  μ–΄λŠ μ‹œμ μ—μ„œ κ³ μ•„λ₯Ό μ •λ¦¬ν•˜λŠ” 것을 μ„ ν˜Έν•©λ‹ˆλ‹€.

이것은 λ‚΄ ν”„λ‘œλ•μ…˜ 레일 μŠ€νƒμž…λ‹ˆλ‹€ : https://github.com/brunocascio/AR-MTB/blob/master/docker-compose.prod.yml

이것은 λ˜ν•œ λ‚΄κ°€ jenkins / jenkins 이미지λ₯Ό ν…ŒμŠ€νŠΈ ν•  λ•Œ _ 큰 _ ν˜Όλž€μ„ 일으켰고 이미 그듀을 λ³΅μ‚¬ν–ˆκΈ° λ•Œλ¬Έμ— / usr / share / jenkins / refμ—μžˆλŠ” 파일의 λ³€κ²½ 사항을 μ‘΄μ€‘ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

μ΄λŠ” μ˜ˆμƒμΉ˜ λͺ»ν•œ μ‚¬μš©μž κ²½ν—˜μž…λ‹ˆλ‹€. docker composeλŠ” λͺ¨λ“  μ˜λ„μ™€ λͺ©μ μ„ μœ„ν•΄ "μˆ¨κ²¨μ§„"λ³Όλ₯¨μ„ μƒμ„±ν•©λ‹ˆλ‹€. 일반 docker run λ₯Ό μ‚¬μš©ν•˜λ©΄ 맀번 μƒˆ λ³Όλ₯¨μ„ μ–»μŠ΅λ‹ˆλ‹€. docker-compose up μ–΄λ–€ 것도 그것에 λŒ€ν•΄ μ΄μ•ΌκΈ°ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” μ˜λ―Έμ—μ„œ μˆ¨κ²¨μ§„ λ³Όλ₯¨μ΄λ―€λ‘œ 이미지가 λ¬΄μ—‡μ„ν•˜κ³  μžˆλŠ”μ§€ μžμ„Ένžˆ μ•Œμ§€ μ•ŠλŠ” ν•œ νŒŒν—€μ³ μ•Όν•©λ‹ˆλ‹€.

_ 맀우 _ 적어도 μš°λ¦¬λŠ” "λ³Όλ₯¨ xλ₯Ό λ‹€μ‹œ λ§Œλ“€μ§€ μ•ŠμŒ"μ΄λΌλŠ” λ©”μ‹œμ§€λ₯Ό μΈμ‡„ν•˜μ—¬ 미래의 λ‹€λ₯Έ μ‚¬λžŒλ“€μ΄ 무슨 일이 μΌμ–΄λ‚˜κ³  μžˆλŠ”μ§€ κΆκΈˆν•΄ν•˜λŠ” μ‹œκ°„μ„ λ‚­λΉ„ ν•  ν•„μš”κ°€ μ—†λ„λ‘ν•΄μ•Όν•©λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš” @dnephin ,

λ‚˜λŠ” sudo rm -rf /var/lib/docker/volumes/aa_dbdatavol ν˜ΈμΆœν•˜κ³  μ΄μ œλŠ” 더 이상 λ‚΄ postgres docker-composeλ₯Ό docker-compose up ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

이 였λ₯˜ λ°›κΈ°

κΈ°λ³Έ λ“œλΌμ΄λ²„λ‘œ λ„€νŠΈμ›Œν¬ "aa_default"생성
aa_postgres_1 생성
ERROR : for postgres Cannot create container for service postgres : no such file or directory
였λ₯˜ : ν”„λ‘œμ νŠΈλ₯Ό λΆˆλŸ¬μ˜€λŠ” λ™μ•ˆ 였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.
데λͺ¬μ˜ 였λ₯˜ 응닡 : ν•΄λ‹Ή μ»¨ν…Œμ΄λ„ˆ μ—†μŒ : aa_postgres_1

이 문제λ₯Ό ν•΄κ²°ν•  μ•„μ΄λ””μ–΄κ°€μžˆμ„ 수 μžˆμœΌλ―€λ‘œ κ³΅μœ ν•΄μ£Όμ„Έμš”. κ°μ‚¬ν•©λ‹ˆλ‹€!

https://github.com/docker/compose/issues/2127#issuecomment -347152650

폴더λ₯Ό λ‹€μ‹œ μƒμ„±ν•˜λ©΄ λ¬Έμ œκ°€ ν•΄κ²°λ©λ‹ˆλ‹€.
/var/lib/docker/volumes/aa_dbdatavol/_data

@dnephin 덕뢄에 κ·€ν•˜μ˜ 닡변이 μ™„λ²½ν•˜κ²Œ μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€. Muchos gracias.

@dnephin이 λ§ν–ˆμŠ΅λ‹ˆλ‹€.

싀행간에 데이터λ₯Ό μœ μ§€ν•˜λŠ” 것이 μ‹€μ œλ‘œ λ³Όλ₯¨μ„ μ‚¬μš©ν•˜λŠ” μœ μΌν•œ μ΄μœ μž…λ‹ˆλ‹€. 영ꡬ 데이터λ₯Ό μ›ν•˜μ§€ μ•ŠλŠ” 경우 λ³Όλ₯¨μ— μ €μž₯ν•˜λŠ” μ΄μœ λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?

μ»¨ν…Œμ΄λ„ˆκ°„μ— νŒŒμΌμ„ κ³΅μœ ν•©λ‹ˆλ‹€. λ³Όλ₯¨μ„ μ‚¬μš©ν•˜μ§€ μ•Šκ³  더 쒋은 방법이 μžˆμŠ΅λ‹ˆκΉŒ?

"파일 곡유"λž€ 무엇을 μ˜λ―Έν•©λ‹ˆκΉŒ?

ν•œ μ»¨ν…Œμ΄λ„ˆκ°€ νŒŒμΌμ— μ“°κ³  λ‹€λ₯Έ μ»¨ν…Œμ΄λ„ˆκ°€ μ΄λŸ¬ν•œ μ“°κΈ°λ₯Ό λ³Ό κ²ƒμœΌλ‘œ μ˜ˆμƒν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ? 파일 μ‹œμŠ€ν…œμ€ 일반적으둜 두 μ„œλΉ„μŠ€ κ°„μ˜ 쒋은 μΈν„°νŽ˜μ΄μŠ€κ°€ μ•„λ‹ˆμ§€λ§Œ,이 경우 μ„œλΉ„μŠ€ 쀑 ν•˜λ‚˜κ°€ λ³Όλ₯¨μ— μ—…λ°μ΄νŠΈλ₯Ό κΈ°λ‘ν•˜μ—¬ 파일 μ‹œμŠ€ν…œμ„ "관리"ν•˜λ„λ‘ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

"곡유"κ°€ 두 개의 μ»¨ν…Œμ΄λ„ˆκ°€ λ™μΌν•œ 파일 쀑 일뢀λ₯Ό μ½λŠ” κ²½μš°μ—λŠ” λ³Όλ₯¨μ΄ ν•„μš”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. COPY λ₯Ό μ‚¬μš©ν•˜μ—¬ 두 μ»¨ν…Œμ΄λ„ˆμ— νŒŒμΌμ„ μΆ”κ°€ν•©λ‹ˆλ‹€.

Docker version 18.06.1-ce, build e68fc7a λ₯Ό μ‚¬μš©ν•˜κ³  있으며 λ‹€μŒ λͺ…령을 μ‚¬μš©ν•˜μ—¬ 읡λͺ… λ³Όλ₯¨μ„ λ‹€μ‹œ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.

docker-compose up -d --build --force-recreate --renew-anon-volumes db

--renew-anon-volumes ν”Œλž˜κ·Έκ°€ μ΅œκ·Όμ— μΆ”κ°€ 된 것 κ°™μŠ΅λ‹ˆλ‹€.

Docker version 18.06.1-ce, build e68fc7a λ₯Ό μ‚¬μš©ν•˜κ³  있으며 λ‹€μŒ λͺ…령을 μ‚¬μš©ν•˜μ—¬ 읡λͺ… λ³Όλ₯¨μ„ λ‹€μ‹œ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.

docker-compose up -d --build --force-recreate --renew-anon-volumes db

--renew-anon-volumes ν”Œλž˜κ·Έκ°€ μ΅œκ·Όμ— μΆ”κ°€ 된 것 κ°™μŠ΅λ‹ˆλ‹€.

이 μ˜΅μ…˜μ„ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰