Hướng dẫn docker-compose wait for mysql - docker-compose chờ mysql

Docker sáng tác chờ phụ thuộc

Bài viết này cung cấp một ví dụ để làm cho Docker-Compose Chờ bộ chứa MySQL đã sẵn sàng trước khi bắt đầu một thùng chứa ứng dụng Docker phụ thuộc. Chúng tôi sẽ sử dụng công cụ Docker-Compose-Wait, đây là tiện ích dòng lệnh nhỏ cho phép chờ số giây cố định và/hoặc đợi cho đến khi cổng TCP được mở trên hình ảnh đích.docker-compose wait for MySQL container to be ready before starting a dependent docker application container. We’ll use the docker-compose-wait tool tool, which is a small command line utility allowing to wait for a fixed amount of seconds and/or to wait until a TCP port is open on a target image.

Bạn cần thêm công cụ Docker-Compose-Wait trong ứng dụng Dockerfile của bạn.


Contents:

  • Bắt đầu nhanh
  • Bước 0: Tải xuống một mẫu
  • Bước 1: Thêm công cụ Docker-Compose-Wait vào ứng dụng Dockerfile của bạn
  • Bước 2: Sửa đổi tệp docker-compose.yml của bạn
  • Bước 3: Xây dựng và chạy ứng dụng của bạn
  • Bước 4: Dừng container và làm sạch
  • Bản tóm tắt
  • Người giới thiệu

Bắt đầu nhanh

# Download a template
git clone https://github.com/kassambara/docker-compose-wait-for-container.git

# Build the demo application
cd docker-compose-wait-for-container/ex01-using-wait-tool
docker-compose build
# Running your app
docker-compose run my_super_app

# Stopping containers and cleaning
docker-compose down 
rm -rf mysql

Bước 0: Tải xuống một mẫu

# Download a template
git clone https://github.com/kassambara/docker-compose-wait-for-container.git
cd docker-compose-wait-for-container/ex02-using-wait-tool

Bước 1: Thêm công cụ Docker-Compose-Wait vào ứng dụng Dockerfile của bạn:

files/docker-compose-wait-for-container/ex01-using-wait-tool
├── docker-compose.yml
└── my_super_app
    ├── Dockerfile
    └── sayhello

Bước 2: Sửa đổi tệp docker-compose.yml của bạn

  • Bước 3: Xây dựng và chạy ứng dụng của bạn
  • Bước 4: Dừng container và làm sạch

Bước 2: Sửa đổi tệp docker-compose.yml của bạn

version: '3.6'
services:
  mysql:
    image: "mysql:5.7"
    container_name: mysql
    restart: always
    volumes:
      - ./mysql:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=your_password
      - MYSQL_USER=root
      - MYSQL_PASSWORD=your_password
      - MYSQL_DATABASE=wordpress
    ports:
      - "3306:3306"
    expose:
      - 3306

  my_super_app:
    build: ./my_super_app
    image: "my_super_app:latest"
    container_name: my_supper_app
    depends_on:
      - mysql
    command: sh -c "/wait && /sayhello"
    environment:
      - WAIT_HOSTS=mysql:3306
      - WAIT_HOSTS_TIMEOUT=300
      - WAIT_SLEEP_INTERVAL=30
      - WAIT_HOST_CONNECT_TIMEOUT=30

  • Bước 3: Xây dựng và chạy ứng dụng của bạn
  • Bước 4: Dừng container và làm sạchwait for multiple hosts, the environment variable can be specified as for example WAIT_HOSTS=mysql:3306, nginx:80

Bản tóm tắt. The behavior of the wait utility can be configured with the following environment variables:

  • Người giới thiệu
  • Cấu trúc thư mục dự án:
  • Nội dung dự án thiết yếu:
  • docker-compose.yml để chạy tất cả các dịch vụ container
  • my_super_app SCRIPTS: Mẫu Dockerfile để xây dựng ứng dụng của bạn. Tại đây, ứng dụng demo này sẽ hỏi tên của bạn và sau đó chúc mừng bạn!
  • Lệnh sh -c “/wait && /sayhello” sẽ chạy công cụ chờ và sau đó là ứng dụng của bạn, tại đây /Sayhello.

Bước 3: Xây dựng và chạy ứng dụng của bạn

# Building your app
cd docker-compose-wait-for-container/ex01-using-wait-tool
docker-compose build
# Running your app
docker-compose run my_super_app

Bước 4: Dừng container và làm sạch

Hướng dẫn docker-compose wait for mysql - docker-compose chờ mysql

Bản tóm tắt

Người giới thiệu

docker-compose down 
rm -rf mysql

Bản tóm tắt

Người giới thiệu

Người giới thiệu

  • Cấu trúc thư mục dự án:


Nội dung dự án thiết yếu:

Hướng dẫn docker-compose wait for mysql - docker-compose chờ mysql
Français

docker-compose.yml để chạy tất cả các dịch vụ container

my_super_app SCRIPTS: Mẫu Dockerfile để xây dựng ứng dụng của bạn. Tại đây, ứng dụng demo này sẽ hỏi tên của bạn và sau đó chúc mừng bạn!