Skip to content

Commit

Permalink
add docker documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
tfeldmann committed Feb 18, 2024
1 parent 3d974aa commit 8f29f48
Show file tree
Hide file tree
Showing 6 changed files with 60 additions and 7 deletions.
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ RUN apt update && \
rm -rf /var/lib/apt/lists/*
ENV ORGANIZE_CONFIG=/config/config.yml \
ORGANIZE_EXIFTOOL_PATH=exiftool
RUN mkdir /config && touch ./README.md
RUN mkdir /config && mkdir /data
COPY --from=pydeps ${VIRTUAL_ENV} ${VIRTUAL_ENV}
COPY ./organize ./organize

Expand Down
6 changes: 0 additions & 6 deletions compose.yml

This file was deleted.

4 changes: 4 additions & 0 deletions docker-conf.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
rules:
- locations: /data
actions:
- echo: "Found file: {path}"
52 changes: 52 additions & 0 deletions docs/docker.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Using the organize docker image

The organize docker image comes preinstalled with `exiftool` and `pdftotext` as well as
all the python dependencies set up and ready to go.

!!! note

As organize is mainly used for moving files around you have to be careful about your
volume mounts and paths. If you move a file to a folder which is not persisted
it is gone as soon as the container is stopped!

## Building the image

`cd` into the organize folder (containing `Dockerfile`) and build the image:

```sh
docker build -t organize .
```

The image is now tagged as `organize`. Now you can test the image by running

```sh
docker run --rm organize
```

This will show the organize usage help text.

## Running

Let's create a basic config file `docker-conf.yml`:

```yml
rules:
- locations: /data
actions:
- echo: "Found file: {path}"
```
We can now run mount the config file to the container path `/config/config.yml`. The current directory is mounted to `/data` so we have some files present.
We can now start the container:

```sh
docker run --rm -v ./docker-conf.yml:/config/config.yml -v .:/data organize run
```

### Passing the config file from stdin

Instead of mounting the config file into the container you can also pass it from stdin:

```sh
docker run -i --rm organize check --stdin < ./docker-conf.yml
```
1 change: 1 addition & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ nav:
- Locations: locations.md
- Filters: filters.md
- Actions: actions.md
- Docker: docker.md
- Changelog: changelog.md
- Migrating from older versions: migrating.md
plugins:
Expand Down
2 changes: 2 additions & 0 deletions organize/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ def from_string(cls, config: str, config_path: Optional[Path] = None) -> Config:
dedented = textwrap.dedent(normalized)
as_dict = yaml.load(dedented, Loader=yaml.SafeLoader)
try:
if not as_dict:
raise ValueError("Config is empty")
inst = cls(**as_dict)
inst._config_path = config_path
return inst
Expand Down

0 comments on commit 8f29f48

Please sign in to comment.