구글 클라우드에서 운영중인 독푸딩 서비스가 있다. 도커를 모를 때라 서버에 필요한 프로그램을 한땀한땀 스크립트를 찾아가면서 설치를 했다. 오라클 클라우드로 API 서버와 DB서버를 이전하면서 도커를 이용했다. 도커만 설치되어 있다면 서버 프로그램을 간단히 실행하고 종료시킬 수 있게 되었다.
GCP 접속하여 Mongo 백업
# ssh 접속
dajkim76@Kims-Mac-mini ~/backend/gcp % ssh -i gcp.key 34.170.xxx.yyy
Enter passphrase for key 'gcp.key':
# mongo 백업
dajkim76@base-backend-1:~$ mongodump --db prod-db --out mongo_221122
# 폴더 압축
dajkim76@base-backend-1:~$ tar cvzf mongo_221122.tar.gz mongo_221122/
dajkim76@base-backend-1:~$ ls -al mongo_221122.tar.gz
-rw-rw-r-- 1 dajkim76 dajkim76 288717 Nov 21 15:45 mongo_221122.tar.gz
압축파일 가져오기
dajkim76@Kims-Mac-mini ~/backend/gcp % sftp -i gcp.key 34.170.xxx.yyy
Enter passphrase for key 'gcp.key':
Connected to 34.170.xxx.yyy.
sftp> get mongo_221122.tar.gz
Fetching /home/dajkim76/mongo_221122.tar.gz to mongo_221122.tar.gz
/home/dajkim76/mongo_221122.tar.gz 100% 282KB 280.5KB/s 00:01
sftp> exit
압축파일 오라클 vm에 업로드
dajkim76@Kims-Mac-mini ~/backend/oci % sftp -i oracle.key opc@132.145.xxx.yyy
Enter passphrase for key 'oracle.key':
Connected to 132.145.xxx.yyy.
sftp> put mongo_221122.tar.gz
Uploading mongo_221122.tar.gz to /home/opc/mongo_221122.tar.gz
mongo_221122.tar.gz 100% 282KB 2.8MB/s 00:00
sftp> exit
압축풀기
[opc@instance-20221029-2034 ~]$ tar xvzf mongo_221122.tar.gz
mongo 도커 컨테이너에 접속하여 db 복구하기
# 컨테이너 접속
docker exec -it docker_mongo_1 bash
# Mongo 복구: 호스트의 mongo_221122 디렉토리의 상위 폴더를 volumes에 바인딩시킬것
mongorestore -u root -p example ./mongo_221122
# 몽고 쉘 접속
mongosh -u root -p example
# 프로덕션 db에 유저 생성
use prod-db
db.createUser( { user: "prod-user", pwd: "prod-pwd", roles: [ { role: "readWrite", db: "prod-db" }, ] } )
백엔드 도커 파일 최종 정리
dev.env 개발환경변수
MONGO_ROOT_PASSWORD=example
MONGO_STORAGE=~/mongo-storage
docker-compose-mongo.yml
version: '3.1'
services:
mongo:
image: mongo:6.0.2
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: ${MONGO_ROOT_PASSWORD}
volumes:
- ${MONGO_STORAGE}:/data/db
- ./:/app
working_dir: /app
hostname: mongo-host
ports:
- 27017:27017
networks:
- backend
networks:
backend:
driver: bridge
external: true
start-mongo.sh
docker-compose -f docker-compose-mongo.yml --env-file $1.env up -d
mongo 서버 실행
start-mongo.sh dev
서비스 운영 환경이라면 prod.env 파일을 만들어서 start-mongo.sh prod
서버 종료는
docker-compose -f docker-compose-mongo.yml stop
참고 사이트
https://mirrors.edge.kernel.org/pub/software/scm/git/docs/git-archive.html