> For the complete documentation index, see [llms.txt](https://percolation-labs.gitbook.io/percolation-labs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://percolation-labs.gitbook.io/percolation-labs/getting-started/docker/services.md).

# Services

```yaml
services:
  minio:
    image: quay.io/minio/minio
    container_name: minio
    ports:
      - "9000:9000"
      - "9090:9090" # MinIO Console
    environment:
      MINIO_ROOT_USER: percolate
      MINIO_ROOT_PASSWORD: percolate
    volumes:
      - minio_data:/data
    command: server /data --console-address ":9090"
  percolate-api:
    image: percolationlabs/percolate-api
    container_name: percolate-api
    ports:
      - "5008:5008"
    environment:
      OPENAI_API_KEY: ${OPENAI_API_KEY}
      P8_PG_HOST: percolate #docker service that has postgres on it
      P8_PG_PORT: 5432 #this is what we do b default - we will change it on k8s
  postgres:
    image: percolationlabs/postgres-base:16
    container_name: percolate
    platform: linux/amd64
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      POSTGRES_DB: app
    ports:
      - "5438:5432"
    volumes:
      - percolate_data:/var/lib/postgresql/percolate
      - ./extension/sql:/docker-entrypoint-initdb.d
    restart: unless-stopped
volumes:
  percolate_data:
  minio_data:
#good to check the api logs so we can see if the api and percolate db are on speaking terms
#docker logs   percolate-api
```

Minio is added to allow for S3 like blob storage for uploading and indexing content.

We also add the Percolate admin API. For example you can use this to index content. This is a good reminder than while you can use localhost from within the container to hit this api, from a client you might do something like this - the key given here is just an example. The host.docker.internal host is used to route via your machine localhost.

```sql
SELECT *
FROM public.http(
	( 'POST', 
	'http://host.docker.internal:5008/' || 'admin/index/',
	ARRAY[http_header('Authorization', 'Bearer ' || 'c8de992a-fd92-9ce0-8cf8-0a8690be00a9')],
	'application/json',
	json_build_object('entity_full_name', 'p8.Agent')::jsonb
	)::http_request
);
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://percolation-labs.gitbook.io/percolation-labs/getting-started/docker/services.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
