Dockerfile for confluence

version: "3.2"
services:
  confluence-db:
    image: postgres:11-alpine
    container_name: confluence-db
    environment:
      - POSTGRES_PASSWORD=confluence
      - POSTGRES_USER=confluence
      - POSTGRES_DB=confluence
    volumes:
      - ./pgdata:/var/lib/postgresql/data
    networks:
      - confluence-db-network

  confluence-server:
    image: atlassian/confluence
    container_name: confluence-server
    environment:
      # Memory / Heap Size
      - JVM_MINIMUM_MEMORY=1024M
      - JVM_MAXIMUM_MEMORY=2048M
      - JVM_RESERVED_CODE_CACHE_SIZE=512M
      # Reverse Proxy Settings
      - ATL_PROXY_NAME=confluence.example.com
      - ATL_PROXY_PORT=443
      - ATL_TOMCAT_SCHEME=https
      - ATL_TOMCAT_SECURE=true
      # Database
      - ATL_JDBC_URL=jdbc:postgresql://confluence-db:5432/confluence
      - ATL_JDBC_USER=confluence
      - ATL_JDBC_PASSWORD=confluence
      - ATL_DB_TYPE=postgresql
      # Data Center configuration
      - ATL_CLUSTER_TYPE=multicast
      - ATL_CLUSTER_NAME=confluence-cluster
      - ATL_CLUSTER_ADDRESS=230.0.0.1
      - ATL_CLUSTER_TTL=32
      # Home Directories
      - CONFLUENCE_HOME=/opt/confluence-home
      - ATL_PRODUCT_HOME_SHARED=/opt/confluence-home-shared
    volumes:
      - type: bind
        source: /opt/confluence/confluence-home
        target: /opt/confluence-home
      - type: bind
        source: /opt/confluence/confluence-home-shared
        target: /opt/confluence-home-shared
    command: sh -c "/opt/atlassian/confluence/bin/start-confluence.sh -fg"
    labels:
      - traefik.enable=true
      - traefik.docker.network=proxy
      - traefik.http.routers.confluence.rule=Host(`confluence.example.com`)
      - traefik.http.routers.confluence.entrypoints=websecure
      - traefik.http.routers.confluence.tls=true
      - traefik.http.routers.confluence.tls.certresolver=letsencrypt
      - traefik.http.services.confluence.loadbalancer.server.port=8090
    depends_on:
      - confluence-db
    networks:
      - confluence-db-network
      - proxy

networks:
  confluence-db-network:
    name: confluence-db-network
  proxy:
    external: true

SSH in Docker for Bastion Host

 openssh-server:
    image: linuxserver/openssh-server
    container_name: openssh-server
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Novosibirsk
      - PUBLIC_KEY_FILE=/pubkeys
      - SUDO_ACCESS=false
      - PASSWORD_ACCESS=false
      - USER_NAME=alpine
      - DOCKER_MODS=linuxserver/mods:openssh-server-ssh-tunnel
    volumes:
      - ./pubkeys:/pubkeys
    ports:
      - 60022:2222

VIM

Основы

Некоторые из нижеописанных команд начинаются с двоеточия: нажав его, появится подсказка, в которой будет указана полная команда. Команды без двоеточий — это скорее горячие клавиши, которые можно использовать в режиме по умолчанию (в нём запускается Vim). Команды, написанные ЗАГЛАВНЫМИ БУКВАМИ — это отдельные клавиши: например, ESC — это клавиша Esc на вашей клавиатуре.

Все команды чувствительны к регистру и должны выполняться вне режима insert.

Выход из Vim

Выход без сохранения изменений:

:q!

Как запомнить: quit dammit! (закройся, чёрт возьми!)

Выход с сохранением изменений:

:wq

Как запомнить: write to disk and quit

Для перемещения по открытому файлу используйте стрелки.

Перемещение на строку 285:

:285

Поиск слова «import»:

/import

Изменение текста

Вставка текста там, где стоит курсор:

i

Как запомнить: insert

Вставка текста в конце текущей строки:

A

Как запомнить: Append

Выход из режима редактирования (возврат в стандартный режим):

ESC

Выделение текста

Переход в визуальный режим:

v

Как запомнить: visual

Для выделения текста используйте стрелки.

Выход из визуального режима:

ESC

Копирование, удаление, вставка

Копирование выделенного текста в буфер:

y

Как запомнить: yank

Удаление выделенного текста:

d

Как запомнить: delete

Копирование текущей строки в буфер:

yy

Как запомнить: yank yank

Копирование трёх строк, включая текущую, в буфер:

3yy

Удаление текущей строки и помещение её в буфер:

dd

Как запомнить: delete delete

Удаление 5 строк, включая текущую:

5dd

Вставка из буфера перед текущей строкой:

P

Примечание: заглавная P

Вставка из буфера после текущей строки:

p

Отмена и восстановление последнего изменения

Отмена последнего изменения:

u

Как запомнить: uh-oh 🙂

Восстановление последнего отменённого изменения:

CTRL + R

Вывод изменений:

:undolist

Отмена двух последних изменений:

2u

Многоуровневое дерево отката изменений Vim очень мощное, подробнее о нём можно почитать в документации.

Работа с файлом

Открытие файла index.html вместо текущего:

:edit index.html

Сохранение текущего файла:

:w

Как запомнить: write to disk

Сохранение файла с изменённым именем, например, changes.txt:

:w changes.txt

Поиск и замена

Поиск и замена всех вхождений строки в файле:

:%s/typo/corrected/g

Поиск и замена с запросом подтверждения замены:

:%s/typo/corrected/gc

Как запомнить: confirm

Подсветка синтаксиса и отступы

Включение подсветки синтаксиса:

:syntax on

Включение автоматических отступов:

:set autoindent

Увеличение отступов нескольких строк при выделении их в визуальном режиме:

>

Вкладки

Открытие server.py в новой вкладке:

:tabe server.py

Как запомнить: tab edit

Переход на вкладку справа:

:tabn

Как запомнить: tab next

Переход на предыдущую вкладку слева:

:tabp

Как запомнить: tab previous

Для закрытия вкладки переключитесь на неё и используйте команду :q или :wq.

Разделённый экран

Открытие templates/base.html в режиме вертикального разделения экрана:

:vs templates/base.html

Как запомнить: vertical split

Открытие shared.js в режиме горизонтального разделения экрана:

:sp shared.js

Как запомнить: the ’default’ horizontal split

Перемещение между «частями» экрана:

CTRL + W + ARROW KEYS

Для закрытия экрана переключитесь на него и используйте команду :q или :wq.