diff options
-rw-r--r-- | .dockerignore | 9 | ||||
-rw-r--r-- | dev/Dockerfile | 13 | ||||
-rw-r--r-- | dev/docker-compose.yaml | 27 | ||||
-rw-r--r-- | docker-compose.yaml | 61 |
4 files changed, 77 insertions, 33 deletions
diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..9fb3df72 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,9 @@ +* + +!botcore/ +!docs/ +!tests/ + +!pyproject.toml +!poetry.lock +!tox.ini diff --git a/dev/Dockerfile b/dev/Dockerfile index 738fc51a..e1d8eba3 100644 --- a/dev/Dockerfile +++ b/dev/Dockerfile @@ -4,18 +4,19 @@ FROM python:3.9-slim ENV PIP_NO_CACHE_DIR=false \ POETRY_VIRTUALENVS_CREATE=false -ENTRYPOINT ["/bin/bash"] -CMD ["./docker-entrypoint.sh"] - # Install poetry RUN pip install -U poetry -RUN mkdir bot -WORKDIR /bot +WORKDIR /app # Install project dependencies COPY pyproject.toml poetry.lock ./ -RUN poetry install --no-dev +RUN poetry install --no-root # Copy the source code in last to optimize rebuilding the image COPY . . +# Install again, this time with the root project +RUN poetry install + +ENTRYPOINT ["python"] +CMD ["-m", "bot"] diff --git a/dev/docker-compose.yaml b/dev/docker-compose.yaml deleted file mode 100644 index e1dca5bb..00000000 --- a/dev/docker-compose.yaml +++ /dev/null @@ -1,27 +0,0 @@ -version: "3.9" - -x-logging: &logging - logging: - driver: "json-file" - options: - max-file: "5" - max-size: "10m" - -x-restart-policy: &restart_policy - restart: unless-stopped - -services: - botcore: - <<: *logging - <<: *restart_policy - build: - context: . - dockerfile: Dockerfile - container_name: botcore - - volumes: - - ./logs:/bot/logs - - .:/bot:ro - - env_file: - - .env diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 00000000..4b6468f1 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,61 @@ +# Modified version of python-discord/bot + +version: "3.8" + +x-restart-policy: &restart_policy + restart: unless-stopped + +services: + postgres: + << : *restart_policy + image: postgres:13-alpine + environment: + POSTGRES_DB: pysite + POSTGRES_PASSWORD: pysite + POSTGRES_USER: pysite + healthcheck: + test: ["CMD-SHELL", "pg_isready -U pysite"] + interval: 2s + timeout: 1s + retries: 5 + + redis: + << : *restart_policy + image: redis:5.0.9 + ports: + - "6379:6379" + + snekbox: + << : *restart_policy + image: ghcr.io/python-discord/snekbox:latest + init: true + ipc: none + ports: + - "8060:8060" + privileged: true + + web: + << : *restart_policy + image: ghcr.io/python-discord/site:latest + command: ["run", "--debug"] + ports: + - "8000:8000" + tty: true + environment: + DATABASE_URL: postgres://pysite:pysite@postgres:5432/pysite + METRICITY_DB_URL: postgres://pysite:pysite@postgres:5432/metricity + SECRET_KEY: suitable-for-development-only + STATIC_ROOT: /var/www/static + + bot: + << : *restart_policy + build: + context: . + dockerfile: dev/Dockerfile + volumes: + - .:/app:ro + tty: true + env_file: + - .env + environment: + BOT_API_KEY: badbot13m0n8f570f942013fc818f234916ca531 |