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...."