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
# Download a template
git clone //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 //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ụ containermy_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
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:
docker-compose.yml
để chạy tất cả các dịch vụ containermy_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!