随着不断的开发,利用容器运行的程序越来越多,这对于软件实施工程师的部署压力就会慢慢变大,此时,采用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基础的小伙伴阅读及使用;因为我没有讲解具体参数,新入坑的小伙伴会很迷惑,我会再写一篇文章讲解一下每个参数的意义。到此结束,*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。