跳至主要內容

安装文件记录

三思原创大约 4 分钟dockerNas容器安装云盘数据库持久化

记录了在威联通 Container Station 中安装可道云盘和elasticsearch的步骤,包括配置文件和指令,方便用户快速部署相应服务。

威联通 Container Station 安装文件记录

  1. 可道云云盘

    version: "3.5"
    
    services:
      db:
        image: mariadb
        command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
        restart: always
        volumes:
          - "/share/docker/kodbox/db:/var/lib/mysql"        #左边 ./db 代表数据库持久化目录位置
        environment:
          - "TZ=Asia/Shanghai"
          - MYSQL_ROOT_PASSWORD=替换自己密码
          - MYSQL_DATABASE=kodbox
          - MYSQL_USER=kodbox
          - MYSQL_PASSWORD=替换自己密码
    
      kodbox:
        image: kodcloud/kodbox
        ports:
          - 1234:80        #左边 80 是主机访问端口,可按需修改
        links:
          - db
          - redis
        volumes:
          - "/share/docker/kodbox/site:/var/www/html"        #左边 ./site 代表kodbox持久化目录位置
        restart: always
    
      redis:
        image: redis:alpine
        environment:
          - "TZ=Asia/Shanghai"
        restart: always
    
    
  2. elasticsearch - MAC

    version: "2.2"
    services:
      setup:
        image: elasticsearch:${STACK_VERSION}
        volumes:
          - /Applications/Dockge/elasticsearch/certs:/usr/share/elasticsearch/config/certs
        user: "0"
        command: >
          bash -c '
            if [ x${ELASTIC_PASSWORD} == x ]; then
              echo "Set the ELASTIC_PASSWORD environment variable in the .env file";
              exit 1;
            elif [ x${KIBANA_PASSWORD} == x ]; then
              echo "Set the KIBANA_PASSWORD environment variable in the .env file";
              exit 1;
            fi;
            if [ ! -f config/certs/ca.zip ]; then
              echo "Creating CA";
              bin/elasticsearch-certutil ca --silent --pem -out config/certs/ca.zip;
              unzip config/certs/ca.zip -d config/certs;
            fi;
            if [ ! -f config/certs/certs.zip ]; then
              echo "Creating certs";
              echo -ne \
              "instances:\n"\
              "  - name: es01\n"\
              "    dns:\n"\
              "      - es01\n"\
              "      - localhost\n"\
              "    ip:\n"\
              "      - 127.0.0.1\n"\
              "  - name: es02\n"\
              "    dns:\n"\
              "      - es02\n"\
              "      - localhost\n"\
              "    ip:\n"\
              "      - 127.0.0.1\n"\
              "  - name: es03\n"\
              "    dns:\n"\
              "      - es03\n"\
              "      - localhost\n"\
              "    ip:\n"\
              "      - 127.0.0.1\n"\
              > config/certs/instances.yml;
              bin/elasticsearch-certutil cert --silent --pem -out config/certs/certs.zip --in config/certs/instances.yml --ca-cert config/certs/ca/ca.crt --ca-key config/certs/ca/ca.key;
              unzip config/certs/certs.zip -d config/certs;
            fi;
            echo "Setting file permissions"
            chown -R root:root config/certs;
            find . -type d -exec chmod 750 \{\} \;;
            find . -type f -exec chmod 640 \{\} \;;
            echo "Waiting for Elasticsearch availability";
            until curl -s --cacert config/certs/ca/ca.crt https://es01:9200 | grep -q "missing authentication credentials"; do sleep 30; done;
            echo "Setting kibana_system password";
            until curl -s -X POST --cacert config/certs/ca/ca.crt -u elastic:${ELASTIC_PASSWORD} -H "Content-Type: application/json" https://es01:9200/_security/user/kibana_system/_password -d "{\"password\":\"${KIBANA_PASSWORD}\"}" | grep -q "^{}"; do sleep 10; done;
            echo "All done!";
          '
        healthcheck:
          test:
            - CMD-SHELL
            - "[ -f config/certs/es01/es01.crt ]"
          interval: 1s
          timeout: 5s
          retries: 120
      es01:
        depends_on:
          setup:
            condition: service_healthy
        image: elasticsearch:${STACK_VERSION}
        volumes:
          - /Applications/Dockge/elasticsearch/certs:/usr/share/elasticsearch/config/certs
          - /Applications/Dockge/elasticsearch/esdata01:/usr/share/elasticsearch/data
        ports:
          - ${ES_PORT}:9200
        environment:
          - node.name=es01
          - cluster.name=${CLUSTER_NAME}
          - cluster.initial_master_nodes=es01,es02,es03
          - discovery.seed_hosts=es02,es03
          - ELASTIC_PASSWORD=${ELASTIC_PASSWORD}
          - bootstrap.memory_lock=true
          - xpack.security.enabled=true
          - xpack.security.http.ssl.enabled=true
          - xpack.security.http.ssl.key=certs/es01/es01.key
          - xpack.security.http.ssl.certificate=certs/es01/es01.crt
          - xpack.security.http.ssl.certificate_authorities=certs/ca/ca.crt
          - xpack.security.http.ssl.verification_mode=certificate
          - xpack.security.transport.ssl.enabled=true
          - xpack.security.transport.ssl.key=certs/es01/es01.key
          - xpack.security.transport.ssl.certificate=certs/es01/es01.crt
          - xpack.security.transport.ssl.certificate_authorities=certs/ca/ca.crt
          - xpack.security.transport.ssl.verification_mode=certificate
          - xpack.license.self_generated.type=${LICENSE}
        mem_limit: ${MEM_LIMIT}
        ulimits:
          memlock:
            soft: -1
            hard: -1
        healthcheck:
          test:
            - CMD-SHELL
            - curl -s --cacert config/certs/ca/ca.crt https://localhost:9200 | grep
              -q 'missing authentication credentials'
          interval: 10s
          timeout: 10s
          retries: 120
        restart: unless-stopped
      es02:
        depends_on:
          - es01
        image: elasticsearch:${STACK_VERSION}
        volumes:
          - /Applications/Dockge/elasticsearch/certs:/usr/share/elasticsearch/config/certs
          - /Applications/Dockge/elasticsearch/esdata02:/usr/share/elasticsearch/data
        environment:
          - node.name=es02
          - cluster.name=${CLUSTER_NAME}
          - cluster.initial_master_nodes=es01,es02,es03
          - discovery.seed_hosts=es01,es03
          - bootstrap.memory_lock=true
          - xpack.security.enabled=true
          - xpack.security.http.ssl.enabled=true
          - xpack.security.http.ssl.key=certs/es02/es02.key
          - xpack.security.http.ssl.certificate=certs/es02/es02.crt
          - xpack.security.http.ssl.certificate_authorities=certs/ca/ca.crt
          - xpack.security.http.ssl.verification_mode=certificate
          - xpack.security.transport.ssl.enabled=true
          - xpack.security.transport.ssl.key=certs/es02/es02.key
          - xpack.security.transport.ssl.certificate=certs/es02/es02.crt
          - xpack.security.transport.ssl.certificate_authorities=certs/ca/ca.crt
          - xpack.security.transport.ssl.verification_mode=certificate
          - xpack.license.self_generated.type=${LICENSE}
        mem_limit: ${MEM_LIMIT}
        ulimits:
          memlock:
            soft: -1
            hard: -1
        healthcheck:
          test:
            - CMD-SHELL
            - curl -s --cacert config/certs/ca/ca.crt https://localhost:9200 | grep
              -q 'missing authentication credentials'
          interval: 10s
          timeout: 10s
          retries: 120
        restart: unless-stopped
      es03:
        depends_on:
          - es02
        image: elasticsearch:${STACK_VERSION}
        volumes:
          - /Applications/Dockge/elasticsearch/certs:/usr/share/elasticsearch/config/certs
          - /Applications/Dockge/elasticsearch/esdata03:/usr/share/elasticsearch/data
        environment:
          - node.name=es03
          - cluster.name=${CLUSTER_NAME}
          - cluster.initial_master_nodes=es01,es02,es03
          - discovery.seed_hosts=es01,es02
          - bootstrap.memory_lock=true
          - xpack.security.enabled=true
          - xpack.security.http.ssl.enabled=true
          - xpack.security.http.ssl.key=certs/es03/es03.key
          - xpack.security.http.ssl.certificate=certs/es03/es03.crt
          - xpack.security.http.ssl.certificate_authorities=certs/ca/ca.crt
          - xpack.security.http.ssl.verification_mode=certificate
          - xpack.security.transport.ssl.enabled=true
          - xpack.security.transport.ssl.key=certs/es03/es03.key
          - xpack.security.transport.ssl.certificate=certs/es03/es03.crt
          - xpack.security.transport.ssl.certificate_authorities=certs/ca/ca.crt
          - xpack.security.transport.ssl.verification_mode=certificate
          - xpack.license.self_generated.type=${LICENSE}
        mem_limit: ${MEM_LIMIT}
        ulimits:
          memlock:
            soft: -1
            hard: -1
        healthcheck:
          test:
            - CMD-SHELL
            - curl -s --cacert config/certs/ca/ca.crt https://localhost:9200 | grep
              -q 'missing authentication credentials'
          interval: 10s
          timeout: 10s
          retries: 120
        restart: unless-stopped
      kibana:
        depends_on:
          es01:
            condition: service_healthy
          es02:
            condition: service_healthy
          es03:
            condition: service_healthy
        image: kibana:${STACK_VERSION}
        volumes:
          - /Applications/Dockge/elasticsearch/certs:/usr/share/kibana/config/certs
          - /Applications/Dockge/elasticsearch/kibanadata:/usr/share/kibana/data
        ports:
          - ${KIBANA_PORT}:5601
        environment:
          - SERVERNAME=kibana
          - ELASTICSEARCH_HOSTS=https://es01:9200
          - ELASTICSEARCH_USERNAME=kibana_system
          - ELASTICSEARCH_PASSWORD=${KIBANA_PASSWORD}
          - ELASTICSEARCH_SSL_CERTIFICATEAUTHORITIES=config/certs/ca/ca.crt
          - I18N_LOCALE=zh-CN
        mem_limit: ${MEM_LIMIT}
        healthcheck:
          test:
            - CMD-SHELL
            - curl -s -I http://localhost:5601 | grep -q 'HTTP/1.1 302 Found'
          interval: 10s
          timeout: 10s
          retries: 120
        restart: unless-stopped
    volumes:
      certs:
        driver: local
      esdata01:
        driver: local
      esdata02:
        driver: local
      esdata03:
        driver: local
      kibanadata:
        driver: local
    networks: {}
    
    
  3. gitlab

    version: '2.3'
    
    services:
      redis:
        restart: always
        image: redis:6.2.6
        command:
        - --loglevel warning
        volumes:
        - /share/docker/Gitlab/redis:/data:Z
    
      postgresql:
        restart: always
        image: sameersbn/postgresql:14-20230628
        volumes:
        - /share/docker/Gitlab/postgresql:/var/lib/postgresql:Z
        environment:
        - DB_USER=gitlab
        - DB_PASS=password
        - DB_NAME=gitlabhq_production
        - DB_EXTENSION=pg_trgm,btree_gist
    
      gitlab:
        restart: always
        image: sameersbn/gitlab:16.9.1
        depends_on:
        - redis
        - postgresql
        ports:
        - "10080:80"
        - "10022:22"
        volumes:
        - /share/docker/Gitlab/data:/home/git/data:Z
        healthcheck:
          test: ["CMD", "/usr/local/sbin/healthcheck"]
          interval: 5m
          timeout: 10s
          retries: 3
          start_period: 5m
        environment:
        - DEBUG=false
    
        - DB_ADAPTER=postgresql
        - DB_HOST=postgresql
        - DB_PORT=5432
        - DB_USER=gitlab
        - DB_PASS=password
        - DB_NAME=gitlabhq_production
    
        - REDIS_HOST=redis
        - REDIS_PORT=6379
    
        - TZ=Asia/Kolkata
        - GITLAB_TIMEZONE=Kolkata
    
        - GITLAB_HTTPS=false
        - SSL_SELF_SIGNED=false
    
        - GITLAB_HTTPS=true
        - GITLAB_HOST=gitlab.li-sihan.com
        - GITLAB_PORT=443
        - GITLAB_SSH_PORT=10022
        - GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alphanumeric-string
        - GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alphanumeric-string
        - GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alphanumeric-string
    
    
        - GITLAB_NOTIFY_ON_BROKEN_BUILDS=true
        - GITLAB_NOTIFY_PUSHER=false
    
        - GITLAB_EMAIL=notifications@example.com
        - GITLAB_EMAIL_REPLY_TO=noreply@example.com
        - GITLAB_INCOMING_EMAIL_ADDRESS=reply@example.com
    
        - GITLAB_BACKUP_SCHEDULE=daily
        - GITLAB_BACKUP_TIME=01:00
    
        - SMTP_ENABLED=false
        - SMTP_DOMAIN=www.example.com
        - SMTP_HOST=smtp.gmail.com
        - SMTP_PORT=587
        - SMTP_USER=mailer@example.com
        - SMTP_PASS=password
        - SMTP_STARTTLS=true
        - SMTP_AUTHENTICATION=login
    
        - IMAP_ENABLED=false
        - IMAP_HOST=imap.gmail.com
        - IMAP_PORT=993
        - IMAP_USER=mailer@example.com
        - IMAP_PASS=password
        - IMAP_SSL=true
        - IMAP_STARTTLS=false
    
        - OAUTH_ENABLED=false
        - OAUTH_AUTO_SIGN_IN_WITH_PROVIDER=
        - OAUTH_ALLOW_SSO=
        - OAUTH_BLOCK_AUTO_CREATED_USERS=true
        - OAUTH_AUTO_LINK_LDAP_USER=false
        - OAUTH_AUTO_LINK_SAML_USER=false
        - OAUTH_EXTERNAL_PROVIDERS=
    
        - OAUTH_CAS3_LABEL=cas3
        - OAUTH_CAS3_SERVER=
        - OAUTH_CAS3_DISABLE_SSL_VERIFICATION=false
        - OAUTH_CAS3_LOGIN_URL=/cas/login
        - OAUTH_CAS3_VALIDATE_URL=/cas/p3/serviceValidate
        - OAUTH_CAS3_LOGOUT_URL=/cas/logout
    
        - OAUTH_SAML_LABEL="Our SAML Provider"
        - OAUTH_SAML_NAME_IDENTIFIER_FORMAT=urn:oasis:names:tc:SAML:2.0:nameid-format:transient
        - GITLAB_PAGES_ENABLED=true
        - GITLAB_PAGES_ACCESS_CONTROL_SERVER=https://gitlab.li-sihan.com
        - GITLAB_PAGES_ACCESS_REDIRECT_URI=https://gitlab.li-sihan.com
        - GITLAB_PAGES_DOMAIN=li-sihan.com
        - GITLAB_PAGES_PORT=443
        - GITLAB_PAGES_HTTPS=true
    
  4. 思源笔记

    version: "3.9"
    services:
      main:
        image: b3log/siyuan:v3.0.1
        command: ['--workspace=/siyuan/workspace/', '--accessAuthCode=替换自己密码']
        user: '1000:1000'
        ports:
          - 8877:6806
        volumes:
          - /share/docker/SiYuan:/siyuan/workspace
        restart: always
        environment:
          # A list of time zone identifiers can be found at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
          - TZ=${TimeZone}
    
    
  5. 首页工程

    version: '3'
    services:
      twonav:
        container_name: twonav
        ports:
          - "8188:80"
        volumes:
          - '/share/docker/twonav:/www'
        image: 'tznb/twonav:latest'
        restart:
          always
    
  6. dockge

    version: "3.8"
    services:
      dockge:
        image: louislam/dockge
        restart: unless-stopped
        ports:
          - 5001:5001
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
          - /Applications/Dockge/dockge/data:/app/data
          - /Applications/Dockge/dockge/stacks:/opt/stacks
        environment:
          - DOCKGE_STACKS_DIR=/opt/stacks
    networks: {}