Docker Compose 사용 설명서

7830 단어 springbootdockerjava
본문에서, 나는 docker compose를 사용하는 완전한 지침을 소개할 것이다.다중 용기 프로그램을 만들 수 있습니다.그런데 docker compose가 무엇인지 왜 사용해야 합니까?

Docker Compose란 무엇입니까?


부두 일꾼이 뭔지 모르면 여기서 읽어도 돼.만약 docker에서 실행되는 프로그램이 있고 데이터베이스, 웹 서버, 부하 균형기 등 여러 개의 다른 서비스를 사용하고 있다면, 여러 개의 docker 파일을 작성하고 여러 용기를 실행할 수 있습니다.이 서류들을 관리하는 것은 매우 번거로울 수 있다.만약 당신이 어떤 내용을 변경해야 한다면, 모든 파일을 변경해야 할 수도 있습니다.
Docker compose는 한 파일에 여러 컨테이너를 정의하는 YAML 파일을 작성하여 이 문제를 해결할 수 있도록 합니다.docker 파일을 작성하여 모든 용기에 파일을 구축하고 실행합니다.

Docker Compose 설치


docker의 정의를 바탕으로 docker compose는 여러 개의 docker 용기를 정의하고 실행하는 도구입니다.
환경에 따라 설명에 따라 docker compose를 설치해야 합니다.docker compose를 설치하기 전에 docker 엔진이 필요합니다.Windows 환경을 사용하고 있으므로 이러한 지침을 여기에 설명합니다.
  • 관리자 모드에서 Power shell
  • 시작
  • 이 명령 실행 – [Net.ServicePointManager]: SecurityProtocol=[Net.SecurityProtocolType]: Tls12
  • 다음 명령 - Invoke WebRequesthttps://github.com/docker/compose/releases/download/1.27.4/docker-compose-Windows-x86_64.exe” - UseBasicParsing-OutFile$Env: ProgramFiles\Docker\Docker-compose.exe
    docker compose를 설치합니다.새 명령 프롬프트를 열고 첫 번째 명령
  • 을 입력합니다.docker-compose -v
    설치에 문제가 없으면 docker compose 버전을 제공해야 합니다.

    Docker를 사용하여 Spring Boot 응용 프로그램 설정하기


    docker compose의 강력한 기능을 보여주기 위해서 간단한 업무 목록spring을 사용하여 프로그램을 시작합니다.GitHub 저장소에서 docker compose 파일과 이 프로그램을 공유할 것입니다.그러나 이 응용 프로그램에는 docker compose에서 사용할 다음 응용 프로그램이 포함됩니다.
  • 스프링 부팅 어플리케이션
  • Java 버전 8
  • 데이터베이스 MySQL
  • 인증용 키 망토
  • 데이터베이스 박사후
  • 그래서 Spring Boot 애플리케이션을 구현하는 방법을 보여주지 않습니다.만약 이 프로그램을 다운로드하고 싶다면, 당신은 Github repository를 방문하거나 나의 이전 댓글here을 읽을 수 있습니다.
    이 Spring Boot 응용 프로그램에 대해 자체 컨테이너에서 실행되는 docker 파일을 만듭니다.이제 KeyClope 및 MySQL 데이터베이스에 연결하여 인증합니다.Keyclope은 같은 MySQL 데이터베이스가 아닌 Postgres 데이터베이스를 사용합니다.
    Spring Boot 응용 프로그램의 docker 파일은 다음과 같습니다.
    FROM openjdk:8-jdk-alpine
    VOLUME /tmp
    COPY ./build/libs/*.jar app.jar
    ENTRYPOINT ["java", "-jar", "/app.jar"]
    
    
    이 docker 파일은 기본적으로 OpenJDK8을 다운로드합니다.디스크는 /tmp에 설치됩니다.프로그램jar 파일을 app.jar 로 복사합니다.물론, 실행 java -jar 을 통해 프로그램을 시작할 것입니다.

    Docker Compose 파일 작성 방법


    현재는 docker-compose.yml 파일입니다.이렇게 하면 다음과 같습니다.
    version: "3.8"
    
    services:
      web:
        build: .
        ports:
          - "8080:8080"
        depends_on:
          - db
          - keycloak
        environment:
          SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/todolist?autoReconnect=true&useSSL=false
          SPRING_DATASOURCE_USERNAME: betterjavacode
          SPRING_DATASOURCE_PASSWORD: betterjavacode
          KEYCLOAK_URI: http://keycloak:8180/auth
          REALM: SpringBootKeycloakApp
        networks:
          - common-network
      db:
        image: mysql:5.7
        ports:
          - "3307:3306"
        restart: always
        environment:
          MYSQL_DATABASE: todolist
          MYSQL_USER: betterjavacode
          MYSQL_PASSWORD: betterjavacode
          MYSQL_ROOT_PASSWORD: root
        volumes:
          - db-data:/var/lib/mysql
        networks:
          - common-network
      postgres:
        image: postgres
        volumes:
          - postgres_data:/var/lib/postgresql/data
        environment:
          POSTGRES_DB: keycloak
          POSTGRES_USER: keycloak
          POSTGRES_PASSWORD: password
        networks:
          - common-network
      keycloak:
        image: jboss/keycloak
        ports:
          - "8180:8180"
        command: ["-Djboss.socket.binding.port-offset=100"]
        environment:
          DB_VENDOR: POSTGRES
          DB_ADDR: postgres
          DB_DATABASE: keycloak
          DB_USER: keycloak
          DB_PASSWORD: password
          DB_SCHEMA: public
          KEYCLOAK_USER: admin
          KEYCLOAK_PASSWORD: Pa55w0rd
        depends_on:
          - postgres
        networks:
          - common-network
    networks:
      common-network:
        driver: bridge
    volumes:
      db-data:
        driver: local
      postgres_data:
        driver: local
    
    
    docker compose 파일의 첫 번째 줄은 docker compose 버전입니다.servicesdocker 용기의 다양한 유형을 구축하는 데 사용할 서비스를 정의합니다.웹 서비스는 docker 파일에서 생성된 이미지를 사용합니다.예를 들어, Spring Boot 응용 프로그램의 docker 이미지를 구축하고 있습니다.이 응용 프로그램은 포트 8080에서 실행될 것입니다.우리는 또한 전달에 필요한 환경 변수를 확보해야 한다.파일에서 보듯이 데이터베이스를db로 사용합니다. 변수 SPRING_DATASOURCE_URL 는 이 점을 보여 줍니다.db는 응용 프로그램이 연결할 데이터베이스 서비스의 이름입니다.
    Dell 데이터베이스 서비스db는 호스트 포트 3307에서 실행되지만 컨테이너에서는 포트 3306(기본 포트)을 사용합니다.이것은 호스트의 3306 포트에서 MySQL을 실행하기 때문에 포트 충돌을 피하기 위해 3307을 사용합니다.
    저희 docker compose 파일에는 또 다른 데이터베이스 서비스postgres가 있습니다.기본 포트 5432를 사용합니다. 이것이 바로 여기에 지정되지 않은 이유입니다.KeyClope은 전체 응용 프로그램의 일부로 postgres를 사용합니다.postgres를 지정하지 않으면 KeyClope은 기본적으로 메모리의 H2 데이터베이스를 사용합니다.메모리 데이터베이스의 문제는 용기를 멈추면 모든 데이터를 잃어버린다는 것이다.이런 상황을 피하기 위해서, 나는 우리의 영역과 사용자의 데이터를 저장하기 위해 진실한 데이터베이스를 사용했다.
    우리가 사용하고 있는 또 다른 서비스는 keycloak이다.인증 IDP입니다.이 서비스는 포트 8180에서 실행 중입니다.Postgres 데이터베이스를 사용하여 연결합니다.KeyClope 서비스의 명령 부분은 기본 8080이 아닌 컨테이너의 포트 8180에서 서비스를 실행하도록 표시합니다.networks 서비스는 모든 용기가 같은 네트워크common-network의 일부이며 이 네트워크에는bridge 형식의 드라이버가 있음을 정의합니다.
    데이터베이스를 사용할 수 있도록 MySQL과 Postgres 데이터베이스에 디스크 볼륨을 불러와야 합니다.이 볼륨을 로컬에서 마운트합니다.

    컨테이너 실행


    현재 응용 프로그램 실행 용기를 사용하려면 다음 명령을 실행하십시오 (응용 프로그램을 구축할 수 있는지 확인하십시오)docker-compose up모든 서비스에 Docker 컨테이너를 구축하고 시작합니다.이제 http://localhost:8080를 통해 애플리케이션에 액세스하는 경우

    사용자가 Get all tasks를 클릭하면 다음과 같이 KeyClope 로그인 화면이 표시됩니다.

    사용자 이름과 암호를 입력하면 로그인한 사용자의 작업이 표시됩니다.

    유용한 명령

    docker-compose up - 이 명령은 docker 컨테이너를 구축하고 시작합니다.docker-compose up -d - 이 명령은 백그라운드에서 모든 프로세스를 실행하는 것과 유사합니다.docker-compose stop - docker 서비스를 중지합니다.이렇게 하면 컨테이너를 중지한 경우에도 컨테이너의 이전 상태가 유지됩니다.docker-compose start - docker 서비스 시작docker-compose logs - docker 컨테이너의 로그를 표시합니다.docker-compose ps - Docker 컨테이너를 나열합니다.docker-compose run - 일회성 명령을 실행합니다.예-docker-compose run web env - 웹 서비스의 환경 변수를 보여 줍니다.

    Docker Compose의 이점

  • docker의 대부분의 서비스를 실행함으로써 환경에 이 서비스를 설치할 필요가 없습니다.
  • docker compose를 사용하여 버전 제어에 원본 코드를 서명하면 다른 개발자와 협업하여 개발 환경을 더욱 쉽게 할 수 있다.
  • 빠르고 간편한 구성너는 플랫폼을 뛰어넘어 너의 서비스를 운행할 수 있다.
  • docker compose의 고급 사용


    이 글에서 network 서비스로 언급되지 않았습니다. docker compose를 통해 확장할 수 있습니다.또한 부하 균형기(또는 역방향 에이전트, 예를 들어 nginx를 실행하고 여러 호스트를 사용하여 부하를 관리할 수 있습니다.
    환경 변수를 사용하는 것 외에 .env 파일을 환경 변수로 사용하고 용기를 시작할 때 불러올 수 있습니다.

    결론


    본고에서, 나는 docker compose를 사용하여 한 docker compose 파일을 사용하여 여러 용기를 실행하는 방법을 보여 주었다.또한 환경을 손쉽게 관리할 수 있습니다.

    도구책

  • Docker Composedocker compose
  • 열쇠 망토 – Keycloak containers
  • 좋은 웹페이지 즐겨찾기