Docker 시리즈(14부): Docker Compose

7514 단어 docker
지금까지 우리는 CLI를 사용하여 컨테이너를 실행했지만 이제 파일 하나로 여러 컨테이너를 실행할 수 있습니다. 이 파일은 기본적으로 .yaml 파일입니다.
에서 우리는

docker container run -p 80:4000 -v $(pwd):/site bretfisher/jekyll-serve


.yaml 파일에서 다음을 사용합니다.

services:
  jekyll:
    image: bretfisher/jekyll-serve
    volumes:
      - .:/site
    ports:
      - '80:4000'

jekyll는 컨테이너 이름입니다. 이미지를 bretfisher/jekyll-serve로 설정했습니다. 볼륨의 경우 .:/site를 의미하는 $(pwd):/site를 사용했습니다. 여기 "."$(pwd) 도 참조하는 현재 디렉토리를 의미합니다. 포트를 80:4000로 설정했습니다.

명령과 .yaml 파일을 비교하고 차이점을 확인할 수 있습니다.

또한 .yaml 파일의 다른 예를 볼 수 있습니다.

services:

  wordpress:
    image: wordpress
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: mysql
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_USER: example
      WORDPRESS_DB_PASSWORD: examplePW
    volumes:
      - ./wordpress-data:/var/www/html

  mysql:
    # we sue mariadb here for arm support
    # mariadb is a fork of MySQL that's often faster and better multi-platform
    image: mariadb
    environment:
      MYSQL_ROOT_PASSWORD: examplerootPW
      MYSQL_DATABASE: wordpress
      MYSQL_USER: example
      MYSQL_PASSWORD: examplePW
    volumes:
      - mysql-data:/var/lib/mysql

volumes:
  mysql-data:



여기서는 2개의 서비스와 1개의 볼륨이 사용되었습니다. 여기에서 ENvironment 변수를 볼 수 있습니다.environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: example
WORDPRESS_DB_PASSWORD: examplePW

볼륨을 사용했음을 알 수 있습니다.
volumes:
- ./wordpress-data:/var/www/html
어디 . 현재 디렉터리를 의미하며 wordpress-data:는 볼륨 이름을 설정하는 것입니다. 나머지 부분(/var/www/html)은 볼륨 경로를 설정하는 부분입니다.

또한 다른 용기에 대해서도
` 환경:
MYSQL_ROOT_PASSWORD: examplerootPW
MYSQL_DATABASE: 워드프레스
MYSQL_USER: 예
MYSQL_PASSWORD: examplePW
볼륨:
- mysql-data:/var/lib/mysql

볼륨:
mysql 데이터:`

여기에서 이 환경 변수와 볼륨도 설정합니다.

CLI 작성



사용하고 배워봅시다.

여기에서 이 compose-sample-2 폴더를 사용합시다repo.

docker-compose.yml 파일에 들어갈 수 있습니다.



nginx.config 파일이 있고 .yaml 파일에서 이것을 볼륨으로 사용했습니다.





volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro


./nginx.conf:는 nginx.conf라는 로컬 파일을 의미하며 "/etc/nginx/conf.d/default.conf:ro"에서 "./nginx.conf"로 모든 파일을 보냈습니다.

또한 여기서는 2개의 컨테이너를 사용하고 있으며 "nginx:1.13"및 "httpd"이미지를 사용했습니다.

이제 CLI에서 이 .yaml 파일을 작성하면 자동으로 컨테이너가 실행됩니다.

docker-compose up






터미널에서 우리는 볼 수 있습니다



주의 깊게 봐! web_1 및 proxy_1이 언급되었습니다. 컨테이너 이름을 웹 및 프록시로 설정했음을 기억하십시오.



localhost를 다시 로드하면 자동으로 proxy_1 및 web_1이 추가됩니다.

참고: localhost에는 실제로 nginx 서버가 아닌 apache 서버(httpd)가 있습니다.
트래픽은 실제로 nginx 서버(프록시)에서 apache(httpd)로 이동하고 있으며 apache는 기본 index.html로 응답합니다. 따라서 새로고침할 때마다 다음이 표시됩니다.


web_1 및 proxy_1이 로그에 추가됩니다.





항상 프록시에 먼저 도달한 다음 백엔드 웹 서버 아파치(httpd)에 도달합니다.

Ctrl + C를 사용하여 중지합시다.



다음을 사용하여 다시 실행할 수 있습니다.

docker-compose up -d



컨테이너는 백그라운드에서 실행되므로 로그가 없습니다. localhost를 확인할 수 있습니다.


로그를 보려면 다음 명령을 사용하십시오.

docker-compose logs




실행 중인 컨테이너를 살펴보겠습니다.

docker-compose ps



우리는 사용할 수 있습니다

docker-compose top


내부에서 실행되는 모든 서비스를 보려면.



마지막으로 컨테이너를 중지하고 청소하려면 다음을 사용하십시오.

docker-compose down



지금 밖에는 아무것도 없어

좋은 웹페이지 즐겨찾기