随着不断的开发,利用容器运行的程序越来越多,这对于软件实施工程师的部署压力就会慢慢变大,此时,采用docker compose部署将会大大的节省时间。

下面是我自己用了两周时间,访问了大量网址,自己逐渐编写出的docker-compose.yml文件内容:

version: '3.5' #版本号
services: #服务
  mongoDB:
    container_name: mongoDB
    image: mongo:5.0.3-focal
    restart: always
    volumes: #保存指定卷信息至创建的卷
      - mongo-data:/data/db
      - mongo-config:/data/configdb
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: Qivie20130113!
    ports:
    - 27017:27017
  postgres:
    image: postgres:14.4
    mem_limit: 512m
    container_name: postgres
    environment:
      - POSTGRES_PASSWORD=alfresco
      - POSTGRES_USER=alfresco
      - POSTGRES_DB=alfresco
    command: postgres -c max_connections=300 -c log_min_messages=LOG
    volumes: #保存指定卷信息至创建的卷
      - postgres-data:/var/lib/postgresql/data
      - ./create_database.sh:/docker-entrypoint-initdb.d/create_database.sh
    ports:
      - "5432:5432"
  mysql:
    container_name: mysql
    image: mysql:5.6.51
    restart: always
    volumes:
      - mysql-data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: Qivie20130113!
    ports:
      - 8283:3306
  keycloak:
    container_name: keycloak
    image: jboss/keycloak:7.0.0
    restart: always
    volumes:
      - keycloak-data:/opt/jboss/keycloak
    environment:
      DB_VENDOR: POSTGRES
      DB_ADDR: postgres
      DB_DATABASE: keycloak
      DB_USER: keycloak
      DB_PASSWORD: Qivie20130113!
      KEYCLOAK_USER: admin
      KEYCLOAK_PASSWORD: Qivie20130113!
      JDBC_PARAMS: 'useSSL=false'
    ports:
      - 9099:8080
    depends_on:
      - postgres
  Camunda: 
    container_name: Camunda
    image: camunda/camunda-bpm-platform:run-latest
    restart: always
    volumes:
      - camunda-data:/camunda
    environment:
      SKIP_DB_CONFIG: true
    ports:
    - 8081:8080
  minio: 
    container_name: minio
    image: minio/minio:latest
    restart: always
    volumes:
      - minio-data:/data
    command: server /data --console-address ":9001"
    ports:
    - 9000:9000
    - 9001:9001
  alfresco:
    image: alfresco/alfresco-content-repository-community:7.2.0-M2
    mem_limit: 1900m
    container_name: alfresco #容器名称
    environment:
      JAVA_TOOL_OPTIONS: "
        -Dencryption.keystore.type=JCEKS
        -Dencryption.cipherAlgorithm=DESede/CBC/PKCS5Padding
        -Dencryption.keyAlgorithm=DESede
        -Dencryption.keystore.location=/usr/local/tomcat/shared/classes/alfresco/extension/keystore/keystore
        -Dmetadata-keystore.password=mp6yc0UD9e
        -Dmetadata-keystore.aliases=metadata
        -Dmetadata-keystore.metadata.password=oKIWzVdEdA
        -Dmetadata-keystore.metadata.algorithm=DESede
      JAVA_OPTS: "
        -Ddb.driver=org.postgresql.Driver
        -Ddb.username=alfresco
        -Ddb.password=alfresco
        -Ddb.url=jdbc:postgresql://postgres:5432/alfresco
        -Dsolr.host=solr6
        -Dsolr.port=8983
        -Dsolr.http.connection.timeout=1000
        -Dsolr.secureComms=secret
        -Dsolr.sharedSecret=secret
        -Dsolr.base.url=/solr
        -Dindex.subsystem.name=solr6
        -Dshare.host=127.0.0.1
        -Dshare.port=8080
        -Dalfresco.host=localhost
        -Dalfresco.port=8080
        -Daos.baseUrlOverwrite=http://localhost:8080/alfresco/aos
        -Dmessaging.broker.url=\"failover:(nio://activemq:61616)?timeout=3000&jms.useCompression=true\"
        -Ddeployment.method=DOCKER_COMPOSE
        -DlocalTransform.core-aio.url=http://transform-core-aio:8090/
        -Dcsrf.filter.enabled=false
        -XX:MinRAMPercentage=50 -XX:MaxRAMPercentage=80
  transform-core-aio:
    image: alfresco/alfresco-transform-core-aio:2.5.7
    mem_limit: 1536m
    container_name: transform
    environment:
      JAVA_OPTS: " -XX:MinRAMPercentage=50 -XX:MaxRAMPercentage=80"
    ports:
      - "8090:8090"
  share:
    image: alfresco/alfresco-share:7.3.0-M2
    mem_limit: 1g
    container_name: share
    environment:
      REPO_HOST: "alfresco"
      REPO_PORT: "8080"
      JAVA_OPTS: "
        -XX:MinRAMPercentage=50
        -XX:MaxRAMPercentage=80
        -Dalfresco.host=localhost
        -Dalfresco.port=8080
        -Dalfresco.context=alfresco
        -Dalfresco.protocol=http
  solr6:
    image: alfresco/alfresco-search-services:2.0.3
    mem_limit: 2g
    container_name: solr6
    environment:
      #Solr needs to know how to register itself with Alfresco
      SOLR_ALFRESCO_HOST: "alfresco"
      SOLR_ALFRESCO_PORT: "8080"
      # Alfresco needs to know how to call solr
      SOLR_SOLR_HOST: "solr6"
      SOLR_SOLR_PORT: "8983"
      # Create the default alfresco and archive cores
      SOLR_CREATE_ALFRESCO_DEFAULTS: "alfresco,archive"
    volumes: #保存指定卷信息至创建的卷
      - solr-data:/opt/alfresco-search-services/data
      - solr-solrhome:/opt/alfresco-search-services/solrhome
      - solr-keystores:/opt/alfresco-search-services/keystores
    ports:
      - "8083:8983"
  activemq:
    image: alfresco/alfresco-activemq:5.17.1-jre11-rockylinux8
    mem_limit: 1g
    container_name: activemq
    volumes: #保存指定卷信息至创建的卷
      - activemq-activemq:/var/log/activemq
      - activemq-conf:/opt/activemq/conf
      - activemq-data:/opt/activemq/data
    ports:
      - "8161:8161"
  content-app:
    image: alfresco/alfresco-content-app:2.11.0
    mem_limit: 128m
    container_name: content
    environment:
      APP_BASE_SHARE_URL: "http://localhost:8080/aca/#/preview/s"
  proxy:
    image: alfresco/alfresco-acs-nginx:3.4.2
    mem_limit: 128m
    container_name: proxy
    environment:
      DISABLE_PROMETHEUS: "true"
      DISABLE_SYNCSERVICE: "true"
      DISABLE_ADW: "true"
      DISABLE_CONTROL_CENTER: "true"
      ENABLE_CONTENT_APP: "true"
    depends_on:
      - alfresco
      - content-app
    ports:
      - "8092:8080"
    links:
      - content-app
      - alfresco
      - share
volumes: #创建卷
  mongo-data:
  mongo-config:
  keycloak-data:
  mysql-data:
  camunda-data:
  minio-data:
  solr-data:
  solr-solrhome:
  solr-keystores:
  activemq-activemq:
  activemq-conf:
  activemq-data:
  postgres-data:

  提示:alfresco容器到最后的proxy容器是一个整体。

        由于yml文件在初始化数据库时只能创建一个数据库和超级管理员用户,因此通过将create_database.sh文件放入启动数据库容器的位置,让数据库初始化时再创建一个数据库和超级管理员用户:

psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
	CREATE USER keycloak WITH ENCRYPTED PASSWORD 'Qivie20130113!';
    CREATE DATABASE keycloak;
	GRANT ALL PRIVILEGES ON DATABASE keycloak TO keycloak;
EOSQL

        文件执行位置:

注意:两个文件要放在同一文件夹下,不然需要修改冒号左侧路径;不修改会找不到文件,导致初始化keycloak数据库失败,等keycloak往数据库写入数据时就会报错 。

        小贴士:1.上面的docker compose配置代码直接复制就可使用,切记需要先下载镜像,不然会等待很久才能完成部署(docker compose up -d 启动后,若镜像不存在会自动下载)。

        2.本文的配置中,volumes采用了docker默认路径来保存数据,如需自定义数据保存路径,请将volumes处更改为下方书写方式:

 之后就用不上最下面的volumes了,删掉或注释掉即可:

        3.自己在部署时记得修改参数值(公司可能有统一密码或要求等)。

        4.在linux中启动时,注意防火墙限制和端口号冲突问题。

        5.查询启动状态时,可通过docker ps查看(docker compose ps 需要在yml文件所在的文件夹下执行才有效,否则报错;为什么只能在这使用,还需等待官方优化,无解)。

        6.若在公网linux服务器上keycloak,需要部署完成后登录postgreSQL数据库,进入keycloak数据库--》选择relam表--》修改id=master的ssl_required字段为NONE,示例:

 修改完成后重启keycloak容器,即可访问keycloak控制台页面;不修改此参数访问控制台会被https拦截。

以上就是本次的全部内容了,本篇文章适合有一定docker或docker compose基础的小伙伴阅读及使用;因为我没有讲解具体参数,新入坑的小伙伴会很迷惑,我会再写一篇文章讲解一下每个参数的意义。到此结束,*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。

Camunda平台Docker映像 该Camunda项目提供了最新的Camunda Platform版本的docker映像。 这些图像可用于演示和测试Camunda平台,也可以使用自己的过程应用程序进行扩展。 计划为每个即将发布的版本(包括Alpha版本)在官方上提供映像。 要启动最新版本: docker pull camunda/camunda-bpm-platform:latest docker run -d --name camunda -p 8080:8080 camunda/camunda-bpm-platform:latest 任务列表,座舱,管理Web应用 可通过登录页面访问三个Camunda Webapp: 管理员对Webapp的访问权限的默认凭据为: 用户名: demo 密码: demo REST API 可通过以下访问Camunda Rest-AP 使用 Docker Compose ,可以通过 docker-compose.yml 文件来替代指令来编排容器,yml文件可以一目了然的看到容器之间的关系,避免了使用一大堆繁琐的指令。同时,可以将已编写好的 compose 文件,共享给他人使用,起到了一次编写,到处运行的效果,减少了大量的重复工作。由于微服务时代的到来,我们生产环境中的应用服务往往是多机多节点部署Docker Compose 这种单机容器编排的方使用的就越来越少了,转而使用 K8S 来进行服务的管理。 camunda-keycloak-docker 具有Keycloak身份验证的Dockerized Camunda服务 该项目运行Postgres,PGadmin和Camunda的实例。 这里使用Camunda映像的版本,并将复制到构建过程中的配置目录中。 Keycloak的正在运行的实例,被配置为描述与 客户端的访问类型设置为“ Confidential 为客户端启用的服务帐户,并分配了以下服务角色(从master-realm或从realm-management ) query-users query-groups view-users 创建了一个名为camunda-admin docker-compose文件将两个文件复制到Camunda容器conf/default.yml和conf/production.yml 。 这些文件都需要为身份服务器 工作流可以实现业务流程的自动化,用户可以自己定义工作流程,通过流程来把常用的任务组织起来,而无需在程序中固化流程。这也符合当今微服务,低代码开发的趋势。Camunda是目前主流的一个工作流平台,遵循业界的标准(BPMN, DMN...),国内的很多低代码工作流平台也是基于Camunda来做进一步的定制开发的。Camunda目前有7和8两个版本,其中最新的8版本是采用SAAS的方来提供服务,也可以基于Kubernets来部署在云上。但是8版本虽然可以免费使用和更改,但是如果用于商业用途是受限制的。7版本分为 Camunda是一个业界著名的工作流引擎平台,其7.0社区版可以提供免费的工作流平台。这里记录以下搭建一个生产环境的过程从以下网址下载最新的7.17版本, https://downloads.camunda.cloud/release/camunda-bpm/run/7.17/下载到本地目录中Demo环境是运行自带的H2数据库,生产环境建议连接到一个独立的数据库。这里我选择的是Postgres,创建一个名为camunda数据库。获取Liquibase的镜像,docker pull liquibase/li 安装:最新版本(2018 04 EA已集成)docker,docker compose安装github 路径1https://github.com/Alfresco/acs-community-deployment            路径2:https://github.com/Alfresco/acs-community-packaging/tree/master/docker-alfres... 如题,关于postgres 12.1版本做主从备份 一开始安装了两个数据库,照着好多教程,配置主数据库后,数据库无法启动,查看启动日志,发现是主数据库的postgresql.conf中的配置了wal_keep_segments,配置文件中有这个参数的说明,但是配置了就无法启动,原因在查找中 折腾了一天,最后在大神的帮助下,基于网上现成的9.5版本的docker,改造调试了下,将12.1版本的整理出来 直接上配置:(将下面四个文件放在一个目录下) docker-compose version: ' mkdir -p /root/mysql/data /root/mysql/init /root/mysql/conf data文件夹是数据存储目录 (如果mysql初始化错误 需要将文件夹内部全部删除) init文件夹可以放置.sh .sql文件在初始化容器时会执行 conf文件夹放置my.cnf配置文件 这里博主直接使用nacos的初始化sql 将sql文件上传到 ... camunda 7.14 快速入门 Camunda是基于Java开发的框架,支持BPMN用于工作流和流程自动化,CMMN用于案例管理,DMN用于业务决策管理。Camunda流程引擎流负责执行BPMN 2.0流程,CMMN 1.1案例和DMN 1.3决策。它具有轻量级的POJO核心,并使用关系数据库进行持久化。MyBatis映射框架提供了ORM映射。 重要的组件以及典型的用户角色如下图: 下载和安装 这里我安装Camunda BPM平台和Camunda Modeler,官方提供了各种版本。 Camun Camunda7是一个基于Java的框架,支持用于工作流和流程自动化的BPMN、用于案例管理的CMMN和用于业务决策管理的DMN。1、流程引擎流程引擎是一个Java库,负责执行BPMN 2.0流程、CMMN 1.1案例和DMN 1.3决策。它有一个轻量级的POJO核心,并使用关系数据库来实现持久性。ORM映射是由MyBatis映射框架提供的。2、流程设计器Camunda Modeler:BPMN 2.0和CMMN 1.1图表以及DMN 1.3决策表的建模工具。 Camunda SpringBoot工程启动时会自动扫描resource文件夹下的bpmn文件,也可以禁止扫描,并自定义部署扫描bpmn。spring:url: jdbc:mysql://127.0.0.1:3306/数据库名? Camunda是一个流行的工作流平台,其自带了基本的用户管理功能。Keycloak是业界主流的一个提供OAUTH等协议标准的一个用户验证与授权的平台。这里介绍如何把Camunda与Keycloak相集成,以实现通过Keycloak来统一管理用户的鉴权与授权,用户通过从Keycloak获取Token来调用Camunda的API。