* feat: add docker-compose file * refactor: lower docker-compose version * feat(docker-compose): add help docs and image dir, fix lavalink * fix(docker): missing ffmpeg dependency * fix(docker): compile imagemagick with pango support This fixes commands such as `meme` causing the bot to crash, since Alpine does not have a pango-enabled version of IM7 in its repos. * feat(docker): cache npm dependencies By copying just the `package-(lock).json` and installing dependencies, Docker will cache the deps on subsequent builds. * fix(docker-compose): need to adjust connection addresses The MongoDB and Chrome addresses are automatically passed through with the correct value. A separate `servers.json` file specifically for docker-compose is used with the correct container addresses. Each container has a static ip - this is due to an unfortunate limitation of the Chrome remote debugger, which needs either an IP or `localhost`, and refuses connections to a hostname. * refactor(docker): do not include servers.json for compose Compose will use the normal `servers.json` and users will have to change the hostnames to `lavalink` and `api` respectively.
101 lines
No EOL
1.9 KiB
YAML
101 lines
No EOL
1.9 KiB
YAML
version: '3.0'
|
|
|
|
services:
|
|
bot:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.bot
|
|
image: esmbot
|
|
restart: unless-stopped
|
|
volumes:
|
|
- ./logs:/home/esmBot/.internal/logs
|
|
- bot-output:/home/esmBot/output
|
|
- bot-temp:/home/esmBot/temp
|
|
env_file:
|
|
- .env
|
|
environment:
|
|
OUTPUT: /home/esmBot/help
|
|
TEMPDIR: /home/esmBot/temp
|
|
|
|
MONGO: mongodb://mongo:27017/esmBot
|
|
# chrome remote debugger can only be accessed over localhost or IP
|
|
CHROME: 172.20.0.4:9222
|
|
links:
|
|
- lavalink
|
|
- chrome
|
|
depends_on:
|
|
- api
|
|
- chrome
|
|
- lavalink
|
|
- mongo
|
|
|
|
networks:
|
|
esmbot:
|
|
ipv4_address: 172.20.0.2
|
|
|
|
|
|
api:
|
|
container_name: api
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.api
|
|
image: esmbot-api
|
|
restart: unless-stopped
|
|
networks:
|
|
esmbot:
|
|
ipv4_address: 172.20.0.3
|
|
|
|
chrome:
|
|
container_name: chrome
|
|
build:
|
|
context: ./utils/screenshot
|
|
image: headless-chrome-alpine
|
|
restart: unless-stopped
|
|
networks:
|
|
esmbot:
|
|
ipv4_address: 172.20.0.4
|
|
|
|
lavalink:
|
|
container_name: lavalink
|
|
image: fredboat/lavalink:dev
|
|
restart: unless-stopped
|
|
volumes:
|
|
- ./application.yml:/opt/Lavalink/application.yml
|
|
- ./assets:/opt/Lavalink/assets
|
|
networks:
|
|
esmbot:
|
|
ipv4_address: 172.20.0.5
|
|
|
|
mongo:
|
|
container_name: mongo
|
|
image: mongo:latest
|
|
restart: unless-stopped
|
|
volumes:
|
|
- mongo-data:/data/db
|
|
networks:
|
|
esmbot:
|
|
ipv4_address: 172.20.0.6
|
|
|
|
mongo-express:
|
|
image: mongo-express
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- mongo
|
|
ports:
|
|
- 8888:8081
|
|
networks:
|
|
esmbot:
|
|
ipv4_address: 172.20.0.7
|
|
|
|
volumes:
|
|
bot-output:
|
|
bot-temp:
|
|
mongo-data:
|
|
|
|
networks:
|
|
esmbot:
|
|
driver: bridge
|
|
ipam:
|
|
config:
|
|
- subnet: 172.20.0.0/24
|
|
gateway: 172.20.0.1 |