Docker-bg-sync是github上的一个项目,它本身是一个docker的容器镜像,该镜像通过unison工具将本地文件同步到目标容器上,从而使目标容器的文件读写发生在本地,避免io的影响
version: "3.7"
networks:
compose-network:
volumes:
bg-sync-volume:
services:
nginx:
image: nginx:1.17
depends_on:
- php
volumes:
- /etc/nginx/conf.d:/etc/nginx/conf.d
- /var/www:/var/www
ports:
- 80:80
networks:
- compose-network
php:
image: php:7.3-fpm
depends_on:
- redis
- mysql
volumes:
- bg-sync-volume:/var/www
ports:
- 9000:9000
networks:
- compose-network
redis:
image: redis
command: redis-server
volumes:
- /var/data/redis/node-1:/data
ports:
- 6379:6379
networks:
- compose-network
mysql:
image: mysql:5.7
volumes:
- /var/data/mysql/node-mysql-57:/var/lib/mysql
ports:
- 3306:3306
networks:
- compose-network
environment:
MYSQL_ROOT_PASSWORD: 123456
bg-sync:
image: cweagans/bg-sync
volumes:
- /var/www:/source
- bg-sync-volume:/var/www
networks:
- compose-network
environment:
- SYNC_DESTINATION=/var/www
- SYNC_MAX_INOTIFY_WATCHES=40000
- SYNC_NODELETE_SOURCE=0
privileged: true
在上面的示例中,我们将本地的/var/www
目录挂载到bg-sync的/source
目录,在bg-sync容器启动后,其会将/source
目录中的数据同步到数据卷bg-sync-volume
的/var/www
目录中,同时该目录挂载到目标服务器php的/var/www
目录,此时即完成了本地数据到目标容器的同步