결론은 서로 다른 디렉토리에서의 docker-compose.yml 파일을 쓰면 가능하다.
[1번]
/home/ID/models/docker-compose.yml 파일을 만든다.
[2번]
/home/ID/modelx/docker-compose.yml 파일을 만든다.
[3번]
/home/ID/model3/docker-compose.yml 파일을 만든다.
docker-compose.yml 파일은 아래 색칠 부분만 각자 다르게 설정해야한다. 어떤값이든 상관없지만. 겹치지 않도록 9개의 서로다른 포트번호를 쓴다. 4000 ~ 60000 번 사이는 아무거나 상관없다.(물론 방화벽에서 사용하는 포트는 열어줘야하겠다)
docker-compose.yml (예시) 분홍색숫자 3개가 서버포트이며, 각각의 설정파일마다 서로 다르게 해야한다.
version: "3"
services:
teslamate:
image: teslamate/teslamate:latest
restart: always
environment:
- DATABASE_USER=teslamate
- DATABASE_PASS=secret
- DATABASE_NAME=teslamate
- DATABASE_HOST=database
- MQTT_HOST=mosquitto
ports:
- 4000:4000
volumes:
- ./import:/opt/app/import
cap_drop:
- all
database:
image: postgres:13
restart: always
environment:
- POSTGRES_USER=teslamate
- POSTGRES_PASSWORD=secret
- POSTGRES_DB=teslamate
volumes:
- teslamate-db:/var/lib/postgresql/data
grafana:
image: teslamate/grafana:latest
restart: always
environment:
- DATABASE_USER=teslamate
- DATABASE_PASS=secret
- DATABASE_NAME=teslamate
- DATABASE_HOST=database
ports:
- 3000:3000
volumes:
- teslamate-grafana-data:/var/lib/grafana
mosquitto:
image: eclipse-mosquitto:1.6
restart: always
ports:
- 1883:1883
volumes:
- mosquitto-conf:/mosquitto/config
- mosquitto-data:/mosquitto/data
volumes:
teslamate-db:
teslamate-grafana-data:
mosquitto-conf:
mosquitto-data:
예를들어 5000, 5001, 5002 로 했을 경우
http://내서버IP:5000 메인화면
http://내서버IP:5001 그라파나 데이터 표 분석화면
5002 는 데이터수집용이며 따로 사용되지는 않음.
이제 관리자 권한일 경우 아래와같이 바로실행 가능하겠다.
[models]
# cd /home/ID/models
$ docker-compose -f /home/ID/models/docker-compose.yml up -d
[modelx]
# cd /home/ID/modelx
$ docker-compose -f /home/ID/modelx/docker-compose.yml up -d
[model3]
# cd /home/ID/model3
$ docker-compose -f /home/ID/model3/docker-compose.yml up -d
백업이나 복원시에도 -f /설정파일경로 는 반드시 추가해주고 그 뒤로 나머지 명령어를 적어야하겠다.
안녕하세요 좋은정보 감사합니다.
답글삭제알려주신대로 따라해봤는데 마지막으로 up 한 포트로만 접속이 됩니다
제가 사용한 서버는 시놀로지 입니다.
놓친 부분이 있을까요?
감사합니다.
최초 실행시 설정값이 적용되어 컨테이너가 만들어집니다. 시놀로지를 사용하신다면, 도커앱에서 테슬라메이트 컨테이너를 찾아서 일시정지한 뒤에, 편집을 통해 포트번호와 환경변수를 설정할 수 있습니다. 해당값을 수정한 뒤에 실행하시면 됩니다.
삭제