Pārlūkot izejas kodu

Перемещение из sdsys/docker/fbdb3

wadim 7 gadi atpakaļ
vecāks
revīzija
00ea6f12ba
4 mainītis faili ar 102 papildinājumiem un 1 dzēšanām
  1. 19 0
      Dockerfile
  2. 21 1
      README.md
  3. 50 0
      docker-entrypoint.sh
  4. 12 0
      firebird.conf

+ 19 - 0
Dockerfile

@@ -0,0 +1,19 @@
+FROM registry.sdsys.ru/centos:7.4.1708
+ENV LANG="en_US.UTF-8"
+ENTRYPOINT ["/docker-entrypoint.sh"]
+EXPOSE 3050
+COPY firebird.conf /etc/firebird/firebird.conf
+COPY docker-entrypoint.sh /docker-entrypoint.sh
+RUN set -x && \
+    yum install -y epel-release && \
+    curl https://copr.fedorainfracloud.org/coprs/makowski/firebird/repo/epel-7/makowski-firebird-epel-7.repo > /etc/yum.repos.d/makowski-firebird-epel-7.repo && \
+    yum install -y firebird icu && \
+    mkdir /var/run/firebird && \
+    chown firebird. /var/run/firebird && \
+    mkdir /data && \
+    chown firebird. /data && \
+    yum clean all && \
+    chmod +x /docker-entrypoint.sh 
+VOLUME /data
+CMD ["/usr/sbin/fbguard"]
+

+ 21 - 1
README.md

@@ -1,2 +1,22 @@
-# fbdb3
+# Firebird 3 #
 
 
+Firebird 3 SuperServer
+
+Установка в образ CentOS 7.4 последней версии из репозитория coprs/makowski/firebird/repo/epel-7/makowski-firebird-epel-7.repo
+Директория /data в контейнере объявлена как VOLUME
+Экспортируется порт 3050
+При каждом запуске контейнера заново инициализируется security3.fdb:
+Ожидается (не обязательно) передача docker secrets:
+* **FB3_SYSDBA_PWD** - пароль пользователя **SYSDBA**, если не передается - пароль задается случайно, см. логи.
+* **FB3_USER_NAME** и **FB3_USER_PWD** - имя и пароль дополнительного пользователя, которому выдается право на создание баз данных.
+
+Пример:
+
+docker service create \  
+  --name fb3 \  
+  -p 3050:3050 \  
+  --secret FB3_SYSDBA_PWD \  
+  --secret FB3_USER_PWD \  
+  --secret FB3_USER_NAME \  
+  --mount "type=volume,source=fb_main,target=/data,volume-driver=local,volume-opt=device=/dev/mapper/docker_data-fb_main,volume-opt=type=xfs" \  
+  registry.sdsys.ru/fbdb3

+ 50 - 0
docker-entrypoint.sh

@@ -0,0 +1,50 @@
+#!/usr/bin/env bash
+set -e
+
+function sec_init
+{
+
+cat <<EOF | isql-fb security.db
+create or alter user SYSDBA password '$_SYSDBA_PWD';
+commit;
+quit;
+EOF
+
+if [ -f /run/secrets/FB3_USER_NAME ] && [ -f /run/secrets/FB3_USER_PWD ]; then
+    echo "Setting up Firebird user $(cat /run/secrets/FB3_USER_NAME) with 'grant create database'"
+    cat <<EOF | isql-fb security.db
+    create or alter user $(cat /run/secrets/FB3_USER_NAME) password '$(cat /run/secrets/FB3_USER_PWD)';
+    grant create database to user $(cat /run/secrets/FB3_USER_NAME);
+    commit;
+    quit;
+EOF
+fi
+
+}
+
+if [ -f /run/secrets/FB3_SYSDBA_PWD ]; then
+    _SYSDBA_PWD=$(cat /run/secrets/FB3_SYSDBA_PWD)
+else
+    _SYSDBA_PWD=$RANDOM$RANDOM
+    echo "Setting SYSDBA's random password: "$_SYSDBA_PWD
+fi
+
+sed -i "s/^UserManager/#Tmp UserManager/" /etc/firebird/firebird.conf
+echo "UserManager = Legacy_UserManager" >>  /etc/firebird/firebird.conf
+sec_init
+sed -i "s/UserManager = Legacy_UserManager//" /etc/firebird/firebird.conf
+sed -i "s/#Tmp UserManager/UserManager/" /etc/firebird/firebird.conf
+sec_init
+
+rm -f /var/log/firebird/firebird.log
+mkfifo /var/log/firebird/firebird.log
+tail -f /var/log/firebird/firebird.log &
+
+exec "$@"
+
+
+
+
+
+
+

+ 12 - 0
firebird.conf

@@ -0,0 +1,12 @@
+ServerMode = Super
+DefaultDbCachePages = 50000
+TempBlockSize = 2M
+TempCacheLimit = 364M
+AuthServer = Srp, Legacy_Auth, Win_Sspi
+AuthClient = Srp, Legacy_Auth, Win_Sspi
+UserManager = Srp, Legacy_UserManager
+WireCrypt = Enabled
+RemoteServicePort = 3050
+LockMemSize = 9M
+LockHashSlots = 30011
+GuardianOption = 1