Docker
docker-compose.yml & backup script
J1Eun
2023. 6. 1. 18:48
docker-compose.yml
version: "3.1"
services:
sonarqube:
image: sonarqube
container_name: sonarqube
restart: always
ports:
- "9000:9000"
- "9002:9002"
networks:
- sonarnet
environment:
SONARQUBE_HOME: /opt/sonarqube
volumes:
- sonar_volume:/opt/sonarqube/data
jenkins:
image: jenkins
container_name: jenkins
restart: always
ports:
- 8080:8080
networks:
- sonarnet
volumes:
- jenkins_volume:/var/jenkins_home
redmine:
image: redmine
container_name: redmine
restart: always
ports:
- 3000:3000
networks:
- sonarnet
depends_on:
- db
environment:
REDMINE_DB_MYSQL: db
REDMINE_DB_PASSWORD: redmine
REDMINE_DB_DATABASE: redmine
REDMINE_DB_ENCODING: utf8
volumes:
- redmine_volume:/usr/src/redmine/files
db:
image: mariadb
container_name: mariadb
restart: always
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: redmine
MYSQL_DATABASE: redmine
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
volumes:
- mariadb_volume:/var/lib/mysql
# - /home/docker/mariadb/conf.d:/etc/mysql/conf.d
networks:
- sonarnet
volumes:
sonar_volume:
jenkins_volume:
mariadb_volume:
redmine_volume:
networks:
sonarnet:
driver: bridge
backup script
#!/bin/sh
#docker backup
VERSION=`date +"%Y%m%d"`
TIME=`date +"%Y%m%d%H%M%S"`
BACK_DIR=/docker/backup/$VERSION
TARPATH=/docker/backup/backup_$TIME.tar
#backup file name
JENKINS=jenkins
SONAR=sonarqube
REDMINE=redmine
MARIADB=mariadb
#container name
JENKINS_NAME=jenkins
SONAR_NAME=sonarqube
REDMINE_NAME=redmine
MARIADB_NAME=mariadb
###########################################
echo "----------------docker backup start _ $VERSION ----------------"
#if [ ! -d $BACK_DIR ];then
# mkdir -p $BACK_DIR
#else
# rm -rf $BACK_DIR/*
#fi
###########################################
echo "===jenkins backup==="
echo `docker commit $JENKINS_NAME $JENKINS:$VERSION`
echo `docker save -o $BACK_DIR/$JENKINS-$VERSION.tar $JENKINS:$VERSION`
echo `docker run --rm --volumes-from $JENKINS_NAME -v $BACK_DIR:/backup ubuntu tar cvf /backup/sqi_jenkins-volume-$VERSION.tar /var/jenkins_home`
echo `docker rmi $JENKINS:$VERSION`
###########################################
echo "===sonarqube backup==="
echo `docker commit $SONAR_NAME $SONAR:$VERSION`
echo `docker save -o $BACK_DIR/$SONAR-$VERSION.tar $SONAR:$VERSION`
echo `docker run --rm --volumes-from $SONAR_NAME -v $BACK_DIR:/backup ubuntu tar cvf /backup/sqi_sonar-volume-$VERSION.tar /opt/sonarqube`
echo `docker rmi $SONAR:$VERSION`
###########################################
echo "===mariadb dump==="
echo `touch $BACK_DIR/mariadb_dump_$VERSION.sql`
echo `docker exec $MARIADB /usr/bin/mysqldump -u root --password=redmine redmine > $BACK_DIR/mariadb_dump_$VERSION.sql`
###########################################
echo "===mariadb backup==="
echo `docker commit $MARIADB_NAME $MARIADB:$VERSION`
echo `docker save -o $BACK_DIR/$MARIADB-$VERSION.tar $MARIADB:$VERSION`
echo `docker rmi $MARIADB:$VERSION`
###########################################
echo "redmine backup"
echo `docker commit $REDMINE_NAME $REDMINE:$VERSION`
echo `docker save -o $BACK_DIR/$REDMINE-$VERSION.tar $REDMINE:$VERSION`
echo `docker run --rm --volumes-from $REDMINE_NAME -v $BACK_DIR:/backup ubuntu tar cvf /backup/redmine-volume-$VERSION.tar /usr/src/redmine`
echo `docker rmi $REDMINE:$VERSION`
###########################################
echo "tar file"
tar -cvf $TARPATH $BACK_DIR
rm -rf $BACK_DIR
echo "----------------backup end----------------"
volume script
#!/bin/sh
BACK_DIR=/docker/backup
JENKINS=jenkins
SONAR=sonarqube
JENKINS_TAR=sqi_jenkins-volume.tar
SONAR_TAR=sqi_sonar-volume.tar
echo "###########volume up start############"
echo "jenkins volume up...."
docker run --rm --volumes-from $JENNKINS -v $BACK_DIR:/backup ubuntu tar xvf /backup/$JEKINS_TAR
echo "sonar volume up..."
docker run --rm --volumes-from $SONAR -v $BACK_DIR:/backup ubuntu tar xvf /backup/$SONAR_TAR
echo "docker restart...."
docker restart $JENKINS $SONAR
echo "end...."