Docker Compose一键式部署容器

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

猜你喜欢

转载自blog.csdn.net/guo0208/article/details/127921337