docker 학습(3)-docker-compose 를 사용 하여 canal-server,rockermq 와 fink 환경 을 구축 합 니 다.

1.docker 운영 환경 준비,설치 안내 참조:
win:https://docker_practice.gitee.io/install/windows.html
Mac:https://docker_practice.gitee.io/install/mac.html
Centos:https://docker_practice.gitee.io/install/centos.html
2:이 기 계 는 docker-compose 를 설치 해 야 합 니 다.
win 과 mac 의 설치 패키지 에는 docker-compose 가 포함 되 어 있 습 니 다.따로 설치 할 필요 가 없습니다.Linux 환경 은 설치 해 야 합 니 다.자세 한 내용 은 참고 하 십시오.
https://docs.docker.com/compose/install/
미 러 소개
1,percona(mysql)데이터베이스
공식 사용 도움말:https://hub.docker.com/_/percona/
2、grafana
공식 사용 도움말:http://docs.grafana.org/installation/docker/
3、rocketmq
공식 사용 도움말:https://github.com/apache/rocketmq-externals/tree/master/rocketmq-docker
4、flink
공식 사용 도움말:https://hub.docker.com/_/flink
5、canal
공식 사용 도움말:https://github.com/alibaba/canal/wiki
4:docker-compose
설 정 된 docker-compose 및 필수 프로필 이 여기에 포장 되 었 습 니 다:포 장 된 첨부 파일
docker-compose.yml 내용 만 있 으 면 여기 있 습 니 다.
version: '2'

services: 
  grafana:
    container_name: grafana
    image: grafana/grafana
    ports:
      - 3000:3000
    user: "472"
    depends_on:
      - target-mysql
  jobmanager:
    image: flink:1.7
    container_name: flink_jobmanager
    expose:
      - "6123"
    ports:
      - "8081:8081"
    command: jobmanager
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager
    depends_on:
      - broker
  taskmanager:
    image: flink:1.7
    container_name: flink_taskmanager
    expose:
      - "6121"
      - "6122"
    depends_on:
      - jobmanager
    command: taskmanager
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager
    depends_on:
      - jobmanager
  rmq-console:
    image: styletang/rocketmq-console-ng
    container_name: rmqconsole
    ports:
      - 8088:8080
    environment:
      JAVA_OPTS: -Drocketmq.config.namesrvAddr=namesrv:9876
    volumes:
      - ./rocketmq/console/logs:/root/logs
      - ./rocketmq/console/store:/root/store
    depends_on:
      - namesrv
  namesrv:
    image: rocketmqinc/rocketmq:4.3.2
    container_name: rmqnamesrv
    ports:
      - 9876:9876
    volumes:
      - ./rocketmq/namesrv/logs:/root/logs
      - ./rocketmq/namesrv/store:/root/store
    command: sh mqnamesrv
    depends_on:
      - canal-server
  broker:
    image: rocketmqinc/rocketmq:4.3.2
    container_name: rmqbroker
    ports:
      - 10909:10909
      - 10911:10911
    volumes:
      - ./rocketmq/broker/logs:/root/logs
      - ./rocketmq/broker/store:/root/store
      - ./rocketmq/broker/broker.conf:/opt/rocketmq-4.3.2/conf/broker.conf
    command: sh mqbroker -n namesrv:9876 -c /opt/rocketmq-4.3.2/conf/broker.conf
    depends_on:
      - namesrv
  canal-server: 
    image: canal/canal-server:v1.1.2
    container_name: canal-server
    ports: 
      - 11111:11111
    depends_on: 
      - mysql
    environment: 
      - canal.instance.master.address=mysql:3306
      - canal.instance.dbUsername=canal
      - canal.instance.dbPassword=canal
      - canal.mq.topic=test
      - canal.instance.filter.regex=artemis.out_order,artemis.out_order_details,artemis.out_order_cancel,wms.t_base_customer,wms.t_pick_order,wms.t_pick_order_detail,wms.t_pick_order_detail_sub,wms.t_pick_wave_detail,wms.t_pick_list,wms.t_pick_task,wms.t_workstation_user_detail,wms.t_workstation
    volumes: 
      - ./canal-server/canal.properties:/home/admin/canal-server/conf/canal.properties
      - ./canal-server/logs:/home/admin/canal-server/logs
  mysql: 
    image: mysql:5.7
    container_name: mysql
    environment: 
      MYSQL_ROOT_PASSWORD: root
    ports: 
      - 3306:3306
    volumes:    
      - ./mysql/data:/var/lib/mysql
      - ./mysql/conf:/etc/mysql/conf.d
      - ./mysql/logs:/logs/
  target-mysql:
    image: mysql:5.7
    container_name: target-mysql
    environment:
      MYSQL_ROOT_PASSWORD: root
    ports:
      - 3307:3306
    volumes:
      - ./target-mysql/mysql:/var/lib/mysql
      - ./target-mysql/logs:/logs/

1.사용 설명:
  • 빈 디 렉 터 리 를 새로 만 들 고 첨부 파일 을 디 렉 터 리 에 다운로드 하 며 압축 해제
  • 이 컴퓨터 가 용기 정의 와 관련 된 포트(3000,3306,3307,8081,8088,9876,10909,10911,11111)를 차지 하지 않 았 는 지 확인 하 십시오.docker-compose.yml 설정 포트 를 수정 하거나 호스트 에 해당 하 는 포트
  • 를 방출 하 십시오.
  • 압축 해제 디 렉 터 리 에서 환경 시작 명령 을 실행 합 니 다:docker-compose up -d
  • mq 의 운영 체제 가 다 르 기 때문에 기본적으로 돌아 오 는 용기 안의 brokerIP 1 주소 입 니 다.따라서 외부 에서 mq 를 방문 해 야 할 때(호스트 나 다른 외부 기기)brokerIP 1 을 현재 호스트 의 ip
  • 로 수정 해 야 합 니 다.


  •  
    2.매개 변수 및 설정 항목 설명
    1.docker-compose 템 플 릿 파일 설명,자세 한 내용 은 조회 가능https://docker_practice.gitee.io/compose/compose_file.html ,아래 에서 사용 할 키워드 들
  • image:미 러 소스 는 어떤 미 러 를 가 져 오 는 지 표시 하고 버 전
  • 을 지정 할 수 있 습 니 다.
  • container_name:용기 별명,docker 환경 에서 의 미 러 를 별명 으로 합 니 다.같은 네트워크 에 있 는 다른 용 기 는 별명 에 따라 해당 용기 에 직접 접근 할 수 있 습 니 다
  • ports:포트 정 보 를 노출 하고 용기 의 포트 와 호스트 의 포트 맵
  • expose:노출 포트 이지 만 호스트 와 비치 지 않 습 니 다
  • command:용기 가 시 작 된 후 기본 으로 실행 되 는 명령 을 덮어 씁 니 다.mq 와 flink 만 이 키 워드 를 사 용 했 습 니 다.모두 하나의 미 러 에서 유래 한 것 이기 때문에 서로 다른 명령 으로 서 비 스 를 시작 해 야 합 니 다
  • environment:환경 변 수 를 설정 합 니 다.주의해 야 할 것 은 용기 에 대응 하 는 변수 만 설정 할 수 있 습 니 다.그렇지 않 으 면 무효 입 니 다(예 를 들 어 canal 의 canal.properties)
  • volumes:데이터 볼 륨 마 운 트 경로 설정.일반적으로,우 리 는 용기 의 data 디 렉 터 리 를 홈 호스트 에 비 추어 용기 가 삭 제 된 후 데이터 가 손실 되 지 않도록 합 니 다
  • .
  • depends_on:용기 의 작 동 의존 순서 문제 처리
  • 2.canal.properties 설정 파일 은 주로 2 가지 문 제 를 처리 합 니 다.
    인자 canal.server Mode 는 RocketMQ 모드 로 지정 해 야 합 니 다.
    인자 canal.mq.server 는 대응 하 는 rocketmq 의 namesrv 주소 와 포트 를 설정 해 야 합 니 다.
    나머지 접 두 사 는 canal.mq 의 매개 변수 설명 을 참고 할 수 있 습 니 다.https://github.com/alibaba/canal/wiki/Canal-Kafka-RocketMQ-QuickStart
    3.my.cnf 설정 파일 은 주로 my sql 데이터 베 이 스 를 줄 모드 로 표시 하고 binlog 를 열 었 습 니 다.
    4.broker.conf 설정 파일 이 mq 인 borker 설정 은 주로 brokerIP 1 을 호스트 의 ip 로 수정 합 니 다.외부 접근 제공
    5.시동 검사
    1.첨부 파일 압축 해제 디 렉 터 리 에서 명령 docker-compose 실행 up-d 시작,마지막 으로 아래 화면 이 나타 나 면 용기 생 성 성공
     
    2.용기 생 성 에 성공 한 후,우 리 는 각 용기 가 시작 되 었 는 지 확인 해 야 합 니 다.
    데이터베이스:설정 항목 에서 제공 하 는 포트 번호 와 기본 비밀번호 에 따라 연결 테스트 를 진행 합 니 다.
    콘 솔 방문http://localhost:8088/#/검사 하 다
    fink:콘 솔 방문http://localhost:8081/#/overview검사 하 다
    grafana:페이지 방문http://localhost:3000/login검사 하 다
    6:  예제 실행
    IDEA 에서 main 을 직접 실행 합 니 다.작업 은 이 컴퓨터 flink jobmanager 에 제출 되 지 않 았 습 니 다.
    docker cp D:\workspace\odsetl\rocketmq-flink\target\rocketmq-flink-0.0.3-SNAPSHOT.jar 3595de91751 4:/opt/flink/
    docker exec -it 3595de917514 flink run -c org.apache.rocketmq.flink.demo.OdsETLJob rocketmq-flink- 0.0.3-SNAPSHOT.jar
    그 속 3595de917514  나타내다 flink_jobmanager 의 containerId
    7:  문제 해결
    win10  docker-compose 오류:ERROR:for mysql  Cannot create container for service mysql: b'Drive has not been shared'
    해결 방법:  Docker->Settings->Shared-Drives 디스크 선택

    좋은 웹페이지 즐겨찾기