diff --git a/pica-codimd/Dockerfile b/pica-codimd/Dockerfile index 805d68a88df05b36e0cd70258b8452119999a071..fe3ce09cc0d0bf250b4d2c804331f9aea93e2257 100644 --- a/pica-codimd/Dockerfile +++ b/pica-codimd/Dockerfile @@ -23,10 +23,11 @@ RUN addgroup --gid 5010 codimd && \ adduser -u 5010 -G codimd -D codimd && \ mkdir /home/$USER_NAME/.npm && \ echo "prefix=/home/codimd/.npm/" > /home/$USER_NAME/.npmrc && \ - mkdir -p /home/codimd/app && \ + mkdir -p /home/codimd/app/deletedPads && \ chown -R codimd:codimd /home/codimd && \ # Git needed so NPM can clone packages and Python for node-gyp - apk add --no-cache bash git python && \ + apk add --no-cache bash git python3-dev py3-pip gcc postgresql-dev musl-dev && \ + pip3 install psycopg2 && \ wget https://github.com/hackmdio/portchecker/releases/download/${PORTCHECKER_VERSION}/portchecker-linux-amd64.tar.gz && \ tar xvf portchecker-linux-amd64.tar.gz -C /usr/local/bin && \ mv /usr/local/bin/portchecker-linux-amd64 /usr/local/bin/pcheck && \ @@ -38,6 +39,8 @@ WORKDIR /home/codimd/app COPY --chown=5010:5010 --from=BUILD /opt/codimd . +COPY --chown=5010:5010 deleteOldPad.py . + RUN npm install --production && npm cache clean --force && rm -rf /tmp/{core-js-banners,phantomjs} COPY entrypoint.sh . diff --git a/pica-codimd/deleteOldPad.py b/pica-codimd/deleteOldPad.py new file mode 100755 index 0000000000000000000000000000000000000000..363f5297f2d769a8b716767840e4674ca7b3bed7 --- /dev/null +++ b/pica-codimd/deleteOldPad.py @@ -0,0 +1,41 @@ +#! /usr/bin/python3 + +import psycopg2 +import sys +from os import environ + +INTERVAL = environ['OLD_INTERVAL'] +USER = environ['POSTGRES_USER'] +DATABASE = environ['POSTGRES_DB'] +PASSWORD = environ['POSTGRES_PASSWORD'] +HOST = ['DB_HOST'] +PORT = ['DB_PORT'] + +print("===== Begin of deleteOldPad job =====") + +try: + db = psycopg2.connect("user = " + USER + " dbname = " +DATABASE + " password = " + PASSWORD + " host = " + HOST + " port = " + PORT) +except: + sys.exit("deleteOldPad : Unable to connect database") + +with db : + with db.cursor() as cur: + #Make a backup of old pads in deletedPads + try: + cur.execute("SELECT \"Notes\".\"id\", \"Notes\".\"content\" FROM \"Notes\" WHERE \"Notes\".\"updatedAt\" < NOW() - interval %s", (INTERVAL,)) + except: + sys.exit("deleteOldPad : unable to select old pads") + for oldPad in cur.fetchall(): + with open("deletedPads/" + oldPad[0] + '.txt', "w") as f: + f.write(oldPad[1]) + + #Delete the old pads + try: + cur.execute("DELETE FROM \"Notes\" WHERE \"Notes\".\"updatedAt\" < NOW() - interval %s", (INTERVAL,)) + except: + sys.exit("deleteOldPad: unable to delete old pads") + print("deleteOldPad : Deleted old pad") + +db.close() + +print("===== End of deleteOldPad job =====") diff --git a/pica-codimd/docker-compose.yml b/pica-codimd/docker-compose.yml index 16375fbb84bc47a6751fddf494c171cef502523b..37981b0282dac7b86c47b6b6ace24f1407f094a8 100644 --- a/pica-codimd/docker-compose.yml +++ b/pica-codimd/docker-compose.yml @@ -46,6 +46,9 @@ services: CMD_CSP_ENABLE: "false" CMD_MATTERMOST_BASEURL: https://team.picasoft.net CMD_DEFAULT_PERMISSION: freely + OLD_INTERVAL: "2 years" + DB_HOST: "codimd-db" + DB_PORT: 5432 networks: - proxy - codimd