142 lines
4.2 KiB
Markdown
142 lines
4.2 KiB
Markdown
# docker-s3-volume-watch
|
|
|
|
Le principe est de synchroniser un dossier avec un volume s3.
|
|
|
|
Voici le fonctionnement :
|
|
- la commande prend comme paramètre le dossier source `/data/` et un bucket S3 `s3://bucket`
|
|
- il synchronise le bucket avec le dossier puis lance `inotify` pour resynchroniser le bucket dès qu'un évènement se produit dans le dossier (modification, création, suppression)
|
|
|
|
Inspiration : [docker-s3-volume](https://github.com/elementar/docker-s3-volume)
|
|
|
|
## README original
|
|
|
|
Creates a Docker container that is restored and backed up to a directory on s3.
|
|
You could use this to run short lived processes that work with and persist data to and from S3.
|
|
|
|
## Usage
|
|
|
|
For the simplest usage, you can just start the data container:
|
|
|
|
```bash
|
|
docker run -d --name my-data-container \
|
|
elementar/s3-volume /data s3://mybucket/someprefix
|
|
```
|
|
|
|
This will download the data from the S3 location you specify into the
|
|
container's `/data` directory. When the container shuts down, the data will be
|
|
synced back to S3.
|
|
|
|
To use the data from another container, you can use the `--volumes-from` option:
|
|
|
|
```bash
|
|
docker run -it --rm --volumes-from=my-data-container busybox ls -l /data
|
|
```
|
|
|
|
### Configuring a sync interval
|
|
|
|
When the `BACKUP_INTERVAL` environment variable is set, a watcher process will
|
|
sync the `/data` directory to S3 on the interval you specify. The interval can
|
|
be specified in seconds, minutes, hours or days (adding `s`, `m`, `h` or `d` as
|
|
the suffix):
|
|
|
|
```bash
|
|
docker run -d --name my-data-container -e BACKUP_INTERVAL=2m \
|
|
elementar/s3-volume /data s3://mybucket/someprefix
|
|
```
|
|
|
|
### Configuring credentials
|
|
|
|
If you are running on EC2, IAM role credentials should just work. Otherwise,
|
|
you can supply credential information using environment variables:
|
|
|
|
```bash
|
|
docker run -d --name my-data-container \
|
|
-e AWS_ACCESS_KEY_ID=... -e AWS_SECRET_ACCESS_KEY=... \
|
|
elementar/s3-volume /data s3://mybucket/someprefix
|
|
```
|
|
|
|
Any environment variable available to the `aws-cli` command can be used. see
|
|
http://docs.aws.amazon.com/cli/latest/userguide/cli-environment.html for more
|
|
information.
|
|
|
|
### Configuring an endpoint URL
|
|
|
|
If you are using an S3-compatible service (such as Oracle OCI Object Storage), you may want to set the service's endpoint URL:
|
|
|
|
```bash
|
|
docker run -d --name my-data-container -e ENDPOINT_URL=... \
|
|
elementar/s3-volume /data s3://mybucket/someprefix
|
|
```
|
|
|
|
### Forcing a sync
|
|
|
|
A final sync will always be performed on container shutdown. A sync can be
|
|
forced by sending the container the `USR1` signal:
|
|
|
|
```bash
|
|
docker kill --signal=USR1 my-data-container
|
|
```
|
|
|
|
### Forcing a restoration
|
|
|
|
The first time the container is ran, it will fetch the contents of the S3
|
|
location to initialize the `/data` directory. If you want to force an initial
|
|
sync again, you can run the container again with the `--force-restore` option:
|
|
|
|
```bash
|
|
docker run -d --name my-data-container \
|
|
elementar/s3-volume --force-restore /data s3://mybucket/someprefix
|
|
```
|
|
|
|
### Deletion and sync
|
|
|
|
By default if there are files that are deleted in your local file system, those will be deleted remotely. If you wish to turn this off, set the environment variable `S3_SYNC_FLAGS` to an empty string:
|
|
|
|
```bash
|
|
docker run -d -e S3_SYNC_FLAGS="" elementar/s3-volume /data s3://mybucket/someprefix
|
|
```
|
|
|
|
### Using Compose and named volumes
|
|
|
|
Most of the time, you will use this image to sync data for another container.
|
|
You can use `docker-compose` for that:
|
|
|
|
```yaml
|
|
# docker-compose.yaml
|
|
version: "2"
|
|
|
|
volumes:
|
|
s3data:
|
|
driver: local
|
|
|
|
services:
|
|
s3vol:
|
|
image: elementar/s3-volume
|
|
command: /data s3://mybucket/someprefix
|
|
volumes:
|
|
- s3data:/data
|
|
db:
|
|
image: postgres
|
|
volumes:
|
|
- s3data:/var/lib/postgresql/data
|
|
```
|
|
|
|
## Contributing
|
|
|
|
1. Fork it!
|
|
2. Create your feature branch: `git checkout -b my-new-feature`
|
|
3. Commit your changes: `git commit -am 'Add some feature'`
|
|
4. Push to the branch: `git push origin my-new-feature`
|
|
5. Submit a pull request :D
|
|
|
|
## Credits
|
|
|
|
* Original Developer - Dave Newman (@whatupdave)
|
|
* Current Maintainer - Fábio Batista (@fabiob)
|
|
|
|
## License
|
|
|
|
This repository is released under the MIT license:
|
|
|
|
* www.opensource.org/licenses/MIT
|