随着不断的开发,利用容器运行的程序越来越多,这对于软件实施工程师的部署压力就会慢慢变大,此时,采用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。