다른 컨테이너와 통신하는 이미지를 만들때는 사용하는 서버(컨테이너 속)의 이름을
컨테이너 이름으로 주어야 한다. 컨테이너 이름이 곧 서버 이름(주소)가 된다.
docker-compose.yml 파일 내에 build가 있으면 up -d 옵션만 실행해도 build가 먼저 된다.
service할 컨테이너를 생성할 이미지가 없으니까 먼저 만드는듯 하다
그런데 이 이미지를 만들기 위해서 먼저 실행되어야 할 컨테이너(db)가 있는데 이걸 먼저 실행 못 시킨다.
그래서 build 과정은 추가적인 컨테이너가 필요 없도록(db를 사용 안하도록) Dockerfile을 구성하고
docker-compose up -d --build 명령으로 실행시 빌드를 먼저 하고 실행하도록 한다.
services 내의 volumes으로 컨테이너와 연결된 호스트의 디렉토리는 다른 service에서 volume으로 연결할 수 없다??
호스트의 여러개의 디렉토리가 볼륨으로 연결되었을 경우 다른 service 에서 구별할 voluem으로 구별할 때 컨테이너 이름만으로는 어느 디렉토리가 어느 볼륨에 연결되어있나를 할 수 없기 때문인듯 하다.
app과 framework를 한 image에 넣어야 할지 두개를 분리해야할지 아직 갈피를 못 잡겠다. 두개를 분리할 경우 app은 volume이 된다. (별도의 설치 과정이 필요)
https://docs.docker.com/compose/compose-file/#volume-configuration-reference
이미지를 빌드할 때 volume은 연결되지 않는다.
flask + sqlalchemy는 migrations이라는 디렉토리를 생성하는데
이미지를 생성할 때 이 디렉토리를 만들면 (db를 초기화 하면)
컨테이너가 실행될 때마다 새로 초기화되는데 이게 좋은건지 나쁜건지 모르겠다.
'운영_설치 > 도커' 카테고리의 다른 글
도커 로그인 (0) | 2022.07.11 |
---|---|
docker-compose.yml 예제 (0) | 2020.09.08 |
MySQL 컨테이너의 사용 (0) | 2020.06.11 |
private registry 사용하기 (0) | 2020.03.21 |
도커 사용의 이것저것 (0) | 2020.03.21 |