good_to_know

docker-compose.yml

version: '3.8'

services:
  db:
    image: postgres
    restart: always
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: 1234
      POSTGRES_DB: postgres
    volumes:
      - pgdata:/var/lib/postgresql/data
    ports:
      - "5432:5432"

volumes:
  pgdata:

MySQL Backup and Restart Script

This Bash script is designed to perform backup operations for a MySQL/MariaDB server container and restart it. It includes a safety check to ensure that the specified branch name does not contain the character '/'.

Prerequisites

  • Docker installed on the host machine.
  • sudo privileges to execute Docker and rsync commands.

Usage

./backup_and_restart.sh [BRANCH]

Maria DB save

#!/bin/bash

#cannot contain character /
#TODO: do check, fail if character present
BRANCH="${1:-default}"

rootDefaults=/home/josefjanda/J/docker-local-env/mariadb

sudo docker exec -i dev_mariadb mariadb --defaults-extra-file=$rootDefaults -e "purge binary logs before now()"

docker stop dev_mariadb

sudo rsync -var --progress --delete /home/josefjanda/J/docker-local-env/mariadb /data/tmp/mariadb/$BRANCH/
sudo rsync -var --progress --delete /var/log/mysql/ /data/tmp/mysqllog/$BRANCH/

docker start dev_mariadb

Docker compose start

#!/bin/bash

sudo /usr/local/bin/docker-compose -f /speedy/config/docker-dev-env/docker-compose.yml up -d

Docker compose stop

#!/bin/bash

sudo /usr/local/bin/docker-compose -f /speedy/config/docker-dev-env/docker-compose.yml down

Docker compose update

#!/bin/bash

sudo /usr/local/bin/docker-compose -f /speedy/config/docker-dev-env/docker-compose.yml down

docker volume rm docker-dev-env_phpmyadmin_data

sudo /usr/local/bin/docker-compose -f /speedy/config/docker-dev-env/docker-compose.yml pull
sudo /usr/local/bin/docker-compose -f /speedy/config/docker-dev-env/docker-compose.yml build
sudo /usr/local/bin/docker-compose -f /speedy/config/docker-dev-env/docker-compose.yml up -d

Docker compose restart

#!/bin/bash

sudo /usr/local/bin/docker-compose -f /speedy/config/docker-dev-env/docker-compose.yml down
sudo /usr/local/bin/docker-compose -f /speedy/config/docker-dev-env/docker-compose.yml up -d

Maria DB restore

#!/bin/bash

#cannot contain character /
#TODO: do check, fail if character present
BRANCH="${1:-default}"

rootDefaults=/home/root/mysql-root-defaults

docker stop dev_mariadb

sudo rsync -var --progress --delete /data/tmp/mysql/$BRANCH/ /speedy/mysql/
sudo rsync -var --progress --delete /data/tmp/mysqllog/$BRANCH/ /var/log/mysql/

docker start dev_mariadb

Testování emailů pres mailhog(github)

//src/main/java/eu/svetit/skyport/util/mail/SkyportMailer.java
public Session createSession(IEmailMessage emailMessage)
{
	Properties properties = new Properties();
	properties.setProperty("mail.smtp.host", "localhost");
	properties.setProperty("mail.smtp.port", "25");
	return Session.getInstance(properties);
}

Nastavit pro odeslání emailů localhost (tj. obalit metodu kde se posílají emaily tímto)

//src/main/java/eu/svetit/skyport/components/pojo/norm/ListNormActionsPanel.java
public void onClick(AjaxRequestTarget target)
            {
                SkyportApplication.get().runWithForcedEmailingEnabled(() -> {
                int notifiedUsersCount = getEntityApi().notifyUsersByEmail(getModelObject());

                getSession().info("Bylo odesláno " + notifiedUsersCount + " notifikací.");
                AjaxNotificationPanel.notifyAll(target, this);
                });
            }

Odhlášení uživatele po určené době

// Behavior for killing session after a timeout
	static class KillSessionAfterTimeoutBehavior extends AjaxSelfUpdatingTimerBehavior
	{
		private static final long serialVersionUID = 1L;
		private Duration sessionLifeTime;

		public KillSessionAfterTimeoutBehavior(Duration updateInterval, Duration sessionLifeTime) {
			super(updateInterval);
			this.sessionLifeTime = sessionLifeTime;
		}

		@Override
		protected void onPostProcessTarget(AjaxRequestTarget target) {
			super.onPostProcessTarget(target);
			System.out.println("Current session life time: " + sessionLifeTime);
			System.out.println("Update interval: " + getUpdateInterval());
			if (sessionLifeTime.compareTo(getUpdateInterval()) <= 0) {
				stop(target);
				System.out.println("Invalidating session...");
				SkyportSession.get().invalidate();
				System.out.println("Session killed due to timeout");
				throw new RestartResponseException(SignInPage.class);
			} else {
				sessionLifeTime = sessionLifeTime.minus(getUpdateInterval());
				System.out.println("Updated session life time: " + sessionLifeTime);
			}
		}
	}

##testování úprava SignPage

/**
	 *
	 * Construct.
	 *
	 * @param parameters
	 */
	public SignInPage(final PageParameters parameters)
	{
		super(parameters);
	}

	@Override
	protected void onInitialize()
	{
		super.onInitialize();

		if (WicketAppUtil.localMode() && !keepSignedInUser && !WicketAppUtil.profile("jjanda"))
		{
			SkyportSession.get().signIn(Dbu.getRecord(SkyportUser.class, SkyportConfig.getSignInAsAdmin()));
		}


		if (AuthDataSessionBase.isUserSignedIn())
		{
			throw new RestartResponseException(SkyportApplication.get().getHomePage());
		}
	}