# Docker

Single command away to run DocKing for development 😎

Image URL: <https://github.com/shipsaas/docking>

```bash
# Pull
docker pull ghcr.io/shipsaas/docking:latest

# Run
docker run -p 8888:80 ghcr.io/shipsaas/docking:latest
```

Then you can visit "**<https://localhost:8888>**" and use it in no time.

To check out more about the ENVs: [visit here](https://docking.shipsaas.tech/deployment/docker)

### Docker-Compose

Sample compose file:

```yaml
version: '3.9'

services:
  docking:
    image: "ghcr.io/shipsaas/docking-dev:latest"
    volumes:
      - app_storage:/var/www/html/storage/app
    links:
      - gotenberg
    ports:
      - '8888:80'

  gotenberg:
    image: gotenberg/gotenberg:7
    ports:
      - '9898:3000'

volumes:
  app_storage:
```

Note: `app_storage` contains the rendered PDF files.

### Database notes

If you don't specify DB envs, by default DocKing will create a new SQLite database every time you run the image, which means:

* Your data **will be lost** every time you turn off DocKing

To ensure your dev data won't be lost, there are 2 options

#### Mount SQLite file

If you wish to use SQLite & keep your data (for dev), you'd need to mount your SQLite file/folder into DocKing, e.g.:

```bash
docker run -p 8888:80 \
    -v /my/path/seth.sqlite:/var/www/html/seth.sqlite
    -e DATABASE_URL='sqlite:////var/www/html/seth.sqlite'
    ghcr.io/shipsaas/docking-dev:latest
```

{% hint style="warning" %}
Yeah it's weird to have 4 `////` right, but that's how we have to define when using Laravel 🥺
{% endhint %}

Note:

* When DocKing starts, it will print the UID & GID, so that you can hit the `chown UID:GID your_sql.sqlite` file

#### Use MySQL/PgSQL/SQL Server

As the title say 😆
