Giter VIP home page Giter VIP logo

self-hosted's Introduction

โš ๏ธ Our self-hosted repo has been archived!

We've moved our docker-compose over to our monorepo.

self-hosted's People

Contributors

dabeeeenster avatar edumucelli avatar flagsmithdev avatar khvn26 avatar ksciana avatar kyle-ssg avatar matthewelwell avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

self-hosted's Issues

Adding additional environment variables to the frontend service has no effect

Hi,

Seems that adding additional environment variables to the frontend service in the compose file has has no effect. I've tried adding FLAGSMITH, FLAGSMITH_CLIENT_API and PREVENT_SIGNUP, to name some, and neither of them seem to be working.

My compose file is as follows:

version: "3"

services:
  ...

  frontend:
    container_name: flagsmith_frontend
    image: flagsmith/flagsmith-frontend:latest
    depends_on:
      - api
    networks:
      - flagsmith
    ports:
      - "8080:8080"
    environment:
      API_URL: https://flagsmith-api.example.com/api/v1/
      ASSET_URL: https://flagsmith.example.com/
      ENV: prod
      FLAGSMITH: abcdef
      FLAGSMITH_CLIENT_API: https://flagsmith-api.example.com/api/v1/ # Flagsmith still connects to https://api.flagsmith.com/api/v1/
      PREVENT_SIGNUP: 1 # Signing up is still possible; tried setting the variable to "true" as well, still with no effect
    volumes:
      - frontend-data:/srv/bt
    restart: always

networks:
  flagsmith:

volumes:
  frontend-data: {}

Best regards,
Antun

I cannot run on ports other that 8000 part of Docker

Hi,

When I run Flagsmith with the default configuration 8000 everything is fine, but I would like to change that, so if I put say 8030 then the web dashboard is inaccessible and returns an empty response.
I think maybe PORT when put as an environment variable in Docker compose, it is not propagated to the front end part of Flagsmith.

on Firefox:

The connection was reset

on Chrome:

ERR_EMPTY_RESPONSE

This is part of my docker compose:

  flagsmith:
      image: flagsmith/flagsmith:latest
      environment:
          DJANGO_ALLOWED_HOSTS: "*" # Change this in production
          DATABASE_URL: postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@myapp-postgres:5432/flagsmith
          DISABLE_INFLUXDB_FEATURES: "true" # set to 'false' to enable InfluxDB
          ENV: prod # set to "prod" in production.
      ports:
          - "9000:9000"
      depends_on:
          - myapp-postgres
          # - influxdb
      links:
          - myapp-postgres

Thanks a lot :)

Self-hosted version showing "Staging Environment"

Hi I just successfully started the self-hosted version, everything runs good but have couple questions

  1. There's a sticky banner showing Staging Environment on the page. I am quite confused what does this mean?
image
  1. On the bottom left side there's a quite hippy red text going on, kinda like a testing text?
image

Thank you so much!

Best practices when developing on a team

Hello!

I'm a developer on a team that has adopted bullet train to manage our feature flags. We currently run bullet train via docker. The question I had was how do you think we should share the flags between developers locally while multiple devs are adding and removing flags.

It just feels a little weird for devs to have to log in to bullet train locally and create an environment every time they set up / reset their DB or fetch changes from colleagues, so I don't think running the containers locally will work.

One idea I am thinking about is running bullet train in our kubernetes cluster instead of (locally running docker containers) and managing them from there for all of our devs but then we would need an internet connection to develop.

If you have any ideas or use a specific strategy to solve this problem I'd love to hear it.

Scary Errors on initial startup

I think the task processor image freaks out for a while until the main flagsmith image has run all the DB migrations:

flagsmith_postgres                 | 2023-06-14 14:24:57.705 UTC [29] ERROR:  function get_tasks_to_process(integer) does not exist at character 15
flagsmith_postgres                 | 2023-06-14 14:24:57.705 UTC [29] HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
flagsmith_postgres                 | 2023-06-14 14:24:57.705 UTC [29] STATEMENT:  SELECT * FROM get_tasks_to_process(10)
flagsmith_postgres                 | 2023-06-14 14:24:57.705 UTC [33] ERROR:  function get_tasks_to_process(integer) does not exist at character 15
flagsmith_postgres                 | 2023-06-14 14:24:57.705 UTC [33] HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
flagsmith_postgres                 | 2023-06-14 14:24:57.705 UTC [33] STATEMENT:  SELECT * FROM get_tasks_to_process(10)
flagsmith_postgres                 | 2023-06-14 14:24:57.707 UTC [31] ERROR:  function get_tasks_to_process(integer) does not exist at character 15
flagsmith_postgres                 | 2023-06-14 14:24:57.707 UTC [31] HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
flagsmith_postgres                 | 2023-06-14 14:24:57.707 UTC [31] STATEMENT:  SELECT * FROM get_tasks_to_process(10)
flagsmith_postgres                 | 2023-06-14 14:24:57.708 UTC [32] ERROR:  function get_tasks_to_process(integer) does not exist at character 15
flagsmith_postgres                 | 2023-06-14 14:24:57.708 UTC [32] HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
flagsmith_postgres                 | 2023-06-14 14:24:57.708 UTC [32] STATEMENT:  SELECT * FROM get_tasks_to_process(10)
flagsmith_postgres                 | 2023-06-14 14:24:57.708 UTC [30] ERROR:  function get_tasks_to_process(integer) does not exist at character 15
flagsmith_postgres                 | 2023-06-14 14:24:57.708 UTC [30] HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
flagsmith_postgres                 | 2023-06-14 14:24:57.708 UTC [30] STATEMENT:  SELECT * FROM get_tasks_to_process(10)
self-hosted-flagsmith_processor-1  | task_processor.threads ERROR    function get_tasks_to_process(integer) does not exist
self-hosted-flagsmith_processor-1  | LINE 1: SELECT * FROM get_tasks_to_process(10)
self-hosted-flagsmith_processor-1  |                       ^
self-hosted-flagsmith_processor-1  | HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
self-hosted-flagsmith_processor-1  | Traceback (most recent call last):
self-hosted-flagsmith_processor-1  |   File "/opt/venv/lib/python3.11/site-packages/django/db/backends/utils.py", line 84, in _execute
self-hosted-flagsmith_processor-1  |     return self.cursor.execute(sql, params)
self-hosted-flagsmith_processor-1  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
self-hosted-flagsmith_processor-1  | psycopg2.errors.UndefinedFunction: function get_tasks_to_process(integer) does not exist
self-hosted-flagsmith_processor-1  | LINE 1: SELECT * FROM get_tasks_to_process(10)
self-hosted-flagsmith_processor-1  |                       ^
self-hosted-flagsmith_processor-1  | HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
self-hosted-flagsmith_processor-1  |
self-hosted-flagsmith_processor-1  |
self-hosted-flagsmith_processor-1  | The above exception was the direct cause of the following exception:
self-hosted-flagsmith_processor-1  |
self-hosted-flagsmith_processor-1  | Traceback (most recent call last):
self-hosted-flagsmith_processor-1  |   File "/app/task_processor/threads.py", line 31, in run
self-hosted-flagsmith_processor-1  |     run_tasks(self.queue_pop_size)
self-hosted-flagsmith_processor-1  |   File "/app/task_processor/processor.py", line 24, in run_tasks
self-hosted-flagsmith_processor-1  |     if tasks:
self-hosted-flagsmith_processor-1  |   File "/opt/venv/lib/python3.11/site-packages/django/db/models/query.py", line 1480, in __bool__
self-hosted-flagsmith_processor-1  |     self._fetch_all()
self-hosted-flagsmith_processor-1  |   File "/opt/venv/lib/python3.11/site-packages/django/db/models/query.py", line 1471, in _fetch_all
self-hosted-flagsmith_processor-1  |     self._result_cache = list(self.iterator())
self-hosted-flagsmith_processor-1  |                          ^^^^^^^^^^^^^^^^^^^^^
self-hosted-flagsmith_processor-1  |   File "/opt/venv/lib/python3.11/site-packages/django/db/models/query.py", line 1494, in iterator
self-hosted-flagsmith_processor-1  |     query = iter(self.query)
self-hosted-flagsmith_processor-1  |             ^^^^^^^^^^^^^^^^
self-hosted-flagsmith_processor-1  |   File "/opt/venv/lib/python3.11/site-packages/django/db/models/sql/query.py", line 110, in __iter__
self-hosted-flagsmith_processor-1  |     self._execute_query()
self-hosted-flagsmith_processor-1  |   File "/opt/venv/lib/python3.11/site-packages/django/db/models/sql/query.py", line 150, in _execute_query
self-hosted-flagsmith_processor-1  |     self.cursor.execute(self.sql, params)
self-hosted-flagsmith_processor-1  |   File "/opt/venv/lib/python3.11/site-packages/django/db/backends/utils.py", line 66, in execute
self-hosted-flagsmith_processor-1  |     return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
self-hosted-flagsmith_processor-1  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
self-hosted-flagsmith_processor-1  |   File "/opt/venv/lib/python3.11/site-packages/django/db/backends/utils.py", line 75, in _execute_with_wrappers
self-hosted-flagsmith_processor-1  |     return executor(sql, params, many, context)
self-hosted-flagsmith_processor-1  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
self-hosted-flagsmith_processor-1  |   File "/opt/venv/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in _execute
self-hosted-flagsmith_processor-1  |     with self.db.wrap_database_errors:
self-hosted-flagsmith_processor-1  |   File "/opt/venv/lib/python3.11/site-packages/django/db/utils.py", line 90, in __exit__
self-hosted-flagsmith_processor-1  |     raise dj_exc_value.with_traceback(traceback) from exc_value
self-hosted-flagsmith_processor-1  |   File "/opt/venv/lib/python3.11/site-packages/django/db/backends/utils.py", line 84, in _execute
self-hosted-flagsmith_processor-1  |     return self.cursor.execute(sql, params)
self-hosted-flagsmith_processor-1  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
self-hosted-flagsmith_processor-1  | django.db.utils.ProgrammingError: function get_tasks_to_process(integer) does not exist
self-hosted-flagsmith_processor-1  | LINE 1: SELECT * FROM get_tasks_to_process(10)
self-hosted-flagsmith_processor-1  |                       ^
self-hosted-flagsmith_processor-1  | HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
self-hosted-flagsmith_processor-1  |
flagsmith_postgres                 | 2023-06-14 14:24:57.710 UTC [29] ERROR:  function get_recurringtasks_to_process(integer) does not exist at character 15
flagsmith_postgres                 | 2023-06-14 14:24:57.710 UTC [29] HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
flagsmith_postgres                 | 2023-06-14 14:24:57.710 UTC [29] STATEMENT:  SELECT * FROM get_recurringtasks_to_process(10)
self-hosted-flagsmith_processor-1  | Exception in thread Thread-1:

I then get warnings being spammed to the console:

self-hosted-flagsmith_processor-1  | task_processor.thread_monitoring WARNING  Writing unhealthy threads: ['Thread-1', 'Thread-2', 'Thread-3', 'Thread-4', 'Thread-5']
self-hosted-flagsmith_processor-1  | task_processor.thread_monitoring WARNING  Writing unhealthy threads: ['Thread-1', 'Thread-2', 'Thread-3', 'Thread-4', 'Thread-5']
self-hosted-flagsmith_processor-1  | task_processor.thread_monitoring WARNING  Writing unhealthy threads: ['Thread-1', 'Thread-2', 'Thread-3', 'Thread-4', 'Thread-5']
self-hosted-flagsmith_processor-1  | task_processor.thread_monitoring WARNING  Writing unhealthy threads: ['Thread-1', 'Thread-2', 'Thread-3', 'Thread-4', 'Thread-5']
self-hosted-flagsmith_processor-1  | task_processor.thread_monitoring WARNING  Writing unhealthy threads: ['Thread-1', 'Thread-2', 'Thread-3', 'Thread-4', 'Thread-5']
self-hosted-flagsmith_processor-1  | task_processor.thread_monitoring WARNING  Writing unhealthy threads: ['Thread-1', 'Thread-2', 'Thread-3', 'Thread-4', 'Thread-5']
self-hosted-flagsmith_processor-1  | task_processor.thread_monitoring WARNING  Writing unhealthy threads: ['Thread-1', 'Thread-2', 'Thread-3', 'Thread-4', 'Thread-5']
self-hosted-flagsmith_processor-1  | task_processor.thread_monitoring WARNING  Writing unhealthy threads: ['Thread-1', 'Thread-2', 'Thread-3', 'Thread-4', 'Thread-5']
self-hosted-flagsmith_processor-1  | task_processor.thread_monitoring WARNING  Writing unhealthy threads: ['Thread-1', 'Thread-2', 'Thread-3', 'Thread-4', 'Thread-5']
self-hosted-flagsmith_processor-1  | task_processor.thread_monitoring WARNING  Writing unhealthy threads: ['Thread-1', 'Thread-2', 'Thread-3', 'Thread-4', 'Thread-5']
self-hosted-flagsmith_processor-1  | task_processor.thread_monitoring WARNING  Writing unhealthy threads: ['Thread-1', 'Thread-2', 'Thread-3', 'Thread-4', 'Thread-5']
self-hosted-flagsmith_processor-1  | task_processor.thread_monitoring WARNING  Writing unhealthy threads: ['Thread-1', 'Thread-2', 'Thread-3', 'Thread-4', 'Thread-5']
self-hosted-flagsmith_processor-1  | task_processor.thread_monitoring WARNING  Writing unhealthy threads: ['Thread-1', 'Thread-2', 'Thread-3', 'Thread-4', 'Thread-5']
self-hosted-flagsmith_processor-1  | task_processor.thread_monitoring WARNING  Writing unhealthy threads: ['Thread-1', 'Thread-2', 'Thread-3', 'Thread-4', 'Thread-5']
self-hosted-flagsmith_processor-1  | task_processor.thread_monitoring WARNING  Writing unhealthy threads: ['Thread-1', 'Thread-2', 'Thread-3', 'Thread-4', 'Thread-5']
self-hosted-flagsmith_processor-1  | task_processor.thread_monitoring WARNING  Writing unhealthy threads: ['Thread-1', 'Thread-2', 'Thread-3', 'Thread-4', 'Thread-5']
self-hosted-flagsmith_processor-1  | task_processor.thread_monitoring WARNING  Writing unhealthy threads: ['Thread-1', 'Thread-2', 'Thread-3', 'Thread-4', 'Thread-5']
self-hosted-flagsmith_processor-1  | task_processor.thread_monitoring WARNING  Writing unhealthy threads: ['Thread-1', 'Thread-2', 'Thread-3', 'Thread-4', 'Thread-5']
self-hosted-flagsmith_processor-1  | task_processor.thread_monitoring WARNING  Writing unhealthy threads: ['Thread-1', 'Thread-2', 'Thread-3', 'Thread-4', 'Thread-5']
self-hosted-flagsmith_processor-1  | task_processor.thread_monitoring WARNING  Writing unhealthy threads: ['Thread-1', 'Thread-2', 'Thread-3', 'Thread-4', 'Thread-5']
self-hosted-flagsmith_processor-1  | task_processor.thread_monitoring WARNING  Writing unhealthy threads: ['Thread-1', 'Thread-2', 'Thread-3', 'Thread-4', 'Thread-5']
self-hosted-flagsmith_processor-1  | task_processor.thread_monitoring WARNING  Writing unhealthy threads: ['Thread-1', 'Thread-2', 'Thread-3', 'Thread-4', 'Thread-5']
self-hosted-flagsmith_processor-1  | task_processor.thread_monitoring WARNING  Writing unhealthy threads: ['Thread-1', 'Thread-2', 'Thread-3', 'Thread-4', 'Thread-5']

running docker-compose down; docker-compose up then brings everythign up cleanly

API container exiting

Hello!

I tried to give Bullet Train a try locally, ran the project with the instructions as indicated, but ran into an issue where the API container would crash. Here's a copy of the logs:

bullettrain_api | /app/src/app/settings/common.py:45: UserWarning: GOOGLE_SERVICE_ACCOUNT not configured, getting organisation usage will not work
bullettrain_api |   warnings.warn("GOOGLE_SERVICE_ACCOUNT not configured, getting organisation usage will not work")
bullettrain_api | /app/src/app/settings/common.py:48: UserWarning: GA_TABLE_ID not configured, getting organisation usage will not work
bullettrain_api |   warnings.warn("GA_TABLE_ID not configured, getting organisation usage will not work")
bullettrain_api | /app/src/app/settings/common.py:262: UserWarning: `SENDGRID_API_KEY` has not been configured. You will not receive emails.
bullettrain_api |   warnings.warn(
bullettrain_api | Operations to perform:
bullettrain_api |   Apply all migrations: admin, api, audit, auth, authtoken, contenttypes, db, environments, features, organisations, permissions, projects, segments, sessions, sites, trench, users
bullettrain_api | Running migrations:
bullettrain_api |   Applying contenttypes.0001_initial... OK
bullettrain_api |   Applying contenttypes.0002_remove_content_type_name... OK
bullettrain_api |   Applying auth.0001_initial... OK
bullettrain_api |   Applying auth.0002_alter_permission_name_max_length... OK
bullettrain_api |   Applying auth.0003_alter_user_email_max_length... OK
bullettrain_api |   Applying auth.0004_alter_user_username_opts... OK
bullettrain_api |   Applying auth.0005_alter_user_last_login_null... OK
bullettrain_api |   Applying auth.0006_require_contenttypes_0002... OK
bullettrain_api |   Applying auth.0007_alter_validators_add_error_messages... OK
bullettrain_api |   Applying auth.0008_alter_user_username_max_length... OK
bullettrain_api |   Applying users.0001_initial... OK
bullettrain_api |   Applying admin.0001_initial... OK
bullettrain_api |   Applying admin.0002_logentry_remove_auto_add... OK
bullettrain_api |   Applying admin.0003_logentry_add_action_flag_choices... OK
bullettrain_api |   Applying organisations.0001_initial... OK
bullettrain_api |   Applying projects.0001_initial... OK
bullettrain_api |   Applying environments.0001_initial... OK
bullettrain_api |   Applying api.0001_initial... OK
bullettrain_api |   Applying api.0002_auto_20170619_1243... OK
bullettrain_api |   Applying api.0003_auto_20170619_1255... OK
bullettrain_api |   Applying api.0004_identity_uuid... OK
bullettrain_api |   Applying api.0005_auto_20180514_1557... OK
bullettrain_api |   Applying api.0006_auto_20180514_1622... OK
bullettrain_api |   Applying api.0007_auto_20180517_1011... OK
bullettrain_api |   Applying api.0008_auto_20180517_1104... OK
bullettrain_api |   Applying api.0009_auto_20180517_1418... OK
bullettrain_api |   Applying api.0010_remove_identity_hash... OK
bullettrain_api |   Applying api.0011_auto_20180517_1646... OK
bullettrain_api |   Applying api.0012_delete_ffadminuser... OK
bullettrain_api |   Applying users.0002_ffadminuser_organisation... OK
bullettrain_api |   Applying users.0003_auto_20180518_1045... OK
bullettrain_api |   Applying users.0004_auto_20180518_1655... OK
bullettrain_api |   Applying users.0005_auto_20180518_1659... OK
bullettrain_api |   Applying users.0006_auto_20180522_0928... OK
bullettrain_api |   Applying api.0013_featurestate_value... OK
bullettrain_api |   Applying api.0014_auto_20180522_0928... OK
bullettrain_api |   Applying api.0015_auto_20180522_0931... OK
bullettrain_api |   Applying users.0007_invite... OK
bullettrain_api |   Applying users.0008_auto_20180522_1302... OK
bullettrain_api |   Applying users.0009_auto_20180522_1342... OK
bullettrain_api |   Applying users.0010_auto_20180522_1350... OK
bullettrain_api |   Applying users.0011_remove_ffadminuser_organisation... OK
bullettrain_api |   Applying users.0012_invite_frontend_base_url... OK
bullettrain_api |   Applying users.0013_auto_20180524_1521... OK
bullettrain_api |   Applying api.0016_auto_20180522_1311... OK
bullettrain_api |   Applying api.0017_feature_description... OK
bullettrain_api |   Applying api.0018_auto_20180524_1521... OK
bullettrain_api |   Applying api.0019_auto_20180525_1436... OK
bullettrain_api |   Applying api.0020_auto_20180525_1541... OK
bullettrain_api |   Applying api.0021_auto_20180525_1651... OK
bullettrain_api |   Applying environments.0002_auto_20180809_0014... OK
bullettrain_api |   Applying environments.0003_auto_20180925_0915... OK
bullettrain_api |   Applying environments.0004_auto_20181026_1438... OK
bullettrain_api |   Applying environments.0005_auto_20181128_1013... OK
bullettrain_api |   Applying environments.0006_auditlog... OK
bullettrain_api |   Applying environments.0007_auto_20190827_1528... OK
bullettrain_api |   Applying audit.0001_initial... OK
bullettrain_api |   Applying audit.0002_auto_20190909_1153... OK
bullettrain_api |   Applying audit.0003_auto_20190910_1545... OK
bullettrain_api |   Applying audit.0004_auto_20200504_1322... OK
bullettrain_api |   Applying auth.0009_alter_user_last_name_max_length... OK
bullettrain_api |   Applying auth.0010_alter_group_name_max_length... OK
bullettrain_api |   Applying auth.0011_update_proxy_permissions... OK
bullettrain_api |   Applying authtoken.0001_initial... OK
bullettrain_api |   Applying authtoken.0002_auto_20160226_1747... OK
bullettrain_api |   Applying db.0001_initial... OK
bullettrain_api |   Applying permissions.0001_initial... OK
bullettrain_api |   Applying permissions.0002_auto_20200221_2126... OK
bullettrain_api |   Applying users.0014_invite_invited_by... OK
bullettrain_api |   Applying users.0015_auto_20180809_0014... OK
bullettrain_api |   Applying users.0016_auto_20180910_1341... OK
bullettrain_api |   Applying users.0017_auto_20180913_1116... OK
bullettrain_api |   Applying users.0018_auto_20180920_1234... OK
bullettrain_api |   Applying users.0019_auto_20181025_1611... OK
bullettrain_api |   Applying users.0020_auto_20181128_1012... OK
bullettrain_api |   Applying organisations.0002_organisation_has_requested_features... OK
bullettrain_api |   Applying organisations.0003_organisation_webhook_notification_email... OK
bullettrain_api |   Applying organisations.0004_organisation_created_date... OK
bullettrain_api |   Applying organisations.0005_auto_20181025_1611... OK
bullettrain_api |   Applying organisations.0006_auto_20181030_1438... OK
bullettrain_api |   Applying organisations.0007_organisation_pending_cancellation... OK
bullettrain_api |   Applying organisations.0008_auto_20181108_1259... OK
bullettrain_api |   Applying organisations.0009_auto_20181108_1306... OK
bullettrain_api |   Applying organisations.0010_subscription... OK
bullettrain_api |   Applying organisations.0011_subscription_max_seats... OK
bullettrain_api |   Applying organisations.0012_auto_20190912_1538... OK
bullettrain_api |   Applying organisations.0013_organisation_alerted_over_plan_limit... OK
bullettrain_api |   Applying organisations.0014_userorganisation... OK
bullettrain_api |   Applying users.0021_auto_20190918_1040... OK
bullettrain_api |   Applying users.0022_invite_role... OK
bullettrain_api |   Applying users.0023_auto_20191122_1039... OK
bullettrain_api |   Applying users.0024_auto_20200216_1924... OK
bullettrain_api |   Applying environments.0008_webhook... OK
bullettrain_api |   Applying environments.0009_auto_20200219_1922... OK
bullettrain_api |   Applying environments.0010_auto_20200219_2343... OK
bullettrain_api |   Applying environments.0011_auto_20200220_0044... OK
bullettrain_api |   Applying environments.0012_auto_20200504_1322... OK
bullettrain_api |   Applying segments.0001_initial... OK
bullettrain_api |   Applying segments.0002_auto_20190515_1113... OK
bullettrain_api |   Applying segments.0003_segment_project... OK
bullettrain_api |   Applying segments.0004_auto_20190523_1325... OK
bullettrain_api |   Applying segments.0005_auto_20190529_1426... OK
bullettrain_api |   Applying segments.0006_auto_20190828_0907... OK
bullettrain_api |   Applying segments.0007_auto_20190906_1416... OK
bullettrain_api |   Applying features.0001_initial... OK
bullettrain_api |   Applying features.0002_auto_20180530_0724... OK
bullettrain_api |   Applying features.0003_auto_20180601_1038... OK
bullettrain_api |   Applying features.0004_auto_20180604_1259... OK
bullettrain_api |   Applying features.0005_auto_20180604_1348... OK
bullettrain_api |   Applying features.0006_featurestate_type... OK
bullettrain_api |   Applying features.0007_feature_default_enabled... OK
bullettrain_api |   Applying features.0008_auto_20180608_1328... OK
bullettrain_api |   Applying features.0009_auto_20180815_1011... OK
bullettrain_api |   Applying features.0009_auto_20180809_0014... OK
bullettrain_api |   Applying features.0010_merge_20180816_1531... OK
bullettrain_api |   Applying features.0011_historicalfeature_squashed_0012_historicalfeaturestate_historicalfeaturestatevalue... OK
bullettrain_api |   Applying features.0012_auto_20190424_1555... OK
bullettrain_api |   Applying features.0013_auto_20190607_1109... OK
bullettrain_api |   Applying features.0014_auto_20190607_1642... OK
bullettrain_api |   Applying features.0015_auto_20190916_1338... OK
bullettrain_api |   Applying features.0016_auto_20190916_1717... OK
bullettrain_api |   Applying features.0017_auto_20200607_1005... OK
bullettrain_api |   Applying features.0018_auto_20200607_1057... OK
bullettrain_api |   Applying features.0019_auto_20200607_1059... OK
bullettrain_api |   Applying features.0020_auto_20200615_1300... OK
bullettrain_api |   Applying features.0021_historicalfeaturesegment... OK
bullettrain_api |   Applying features.0022_auto_20200630_2115... OK
bullettrain_api |   Applying organisations.0015_auto_20190924_1641... OK
bullettrain_api |   Applying organisations.0016_auto_20190924_1716... OK
bullettrain_api |   Applying organisations.0017_subscription_cancellation_date... OK
bullettrain_api |   Applying organisations.0014_organisation_stop_serving_flags... OK
bullettrain_api |   Applying organisations.0018_merge_20191003_1249... OK
bullettrain_api |   Applying organisations.0019_subscription_customer_id... OK
bullettrain_api |   Applying organisations.0020_auto_20200222_1159... OK
bullettrain_api |   Applying organisations.0021_auto_20200619_1555... OK
bullettrain_api |   Applying projects.0002_projectpermission_userpermissiongroupprojectpermission_userprojectpermission... OK
bullettrain_api |   Applying projects.0003_auto_20200216_2050... OK
bullettrain_api |   Applying projects.0004_auto_20200220_0044... OK
bullettrain_api |   Applying projects.0005_auto_20200221_2317... OK
bullettrain_api |   Applying projects.0006_auto_20200224_2106... OK
bullettrain_api |   Applying projects.0007_auto_20200504_1322... OK
bullettrain_api |   Applying sessions.0001_initial... OK
bullettrain_api |   Applying sites.0001_initial... OK
bullettrain_api |   Applying sites.0002_alter_domain_unique... OK
bullettrain_api |   Applying trench.0001_initial... OK
bullettrain_api |   Applying trench.0002_auto_20190111_1403... OK
bullettrain_api |   Applying trench.0003_auto_20190213_2330... OK
bullettrain_api |   Applying users.0025_auto_20200509_1326... OK
bullettrain_api |   Applying users.0026_ffadminuser_google_user_id... OK
bullettrain_api |   Applying users.0027_ffadminuser_github_user_id... OK
bullettrain_api | /app/src/app/settings/common.py:45: UserWarning: GOOGLE_SERVICE_ACCOUNT not configured, getting organisation usage will not work
bullettrain_api |   warnings.warn("GOOGLE_SERVICE_ACCOUNT not configured, getting organisation usage will not work")
bullettrain_api | /app/src/app/settings/common.py:48: UserWarning: GA_TABLE_ID not configured, getting organisation usage will not work
bullettrain_api |   warnings.warn("GA_TABLE_ID not configured, getting organisation usage will not work")
bullettrain_api | /app/src/app/settings/common.py:262: UserWarning: `SENDGRID_API_KEY` has not been configured. You will not receive emails.
bullettrain_api |   warnings.warn(
bullettrain_api |
bullettrain_api | 184 static files copied to '/app/src/static'.
bullettrain_api | /app/src/app/settings/common.py:45: UserWarning: GOOGLE_SERVICE_ACCOUNT not configured, getting organisation usage will not work
bullettrain_api |   warnings.warn("GOOGLE_SERVICE_ACCOUNT not configured, getting organisation usage will not work")
bullettrain_api | /app/src/app/settings/common.py:48: UserWarning: GA_TABLE_ID not configured, getting organisation usage will not work
bullettrain_api |   warnings.warn("GA_TABLE_ID not configured, getting organisation usage will not work")
bullettrain_api | /app/src/app/settings/common.py:262: UserWarning: `SENDGRID_API_KEY` has not been configured. You will not receive emails.
bullettrain_api |   warnings.warn(
bullettrain_api | /app/src/app/settings/common.py:45: UserWarning: GOOGLE_SERVICE_ACCOUNT not configured, getting organisation usage will not work
bullettrain_api |   warnings.warn("GOOGLE_SERVICE_ACCOUNT not configured, getting organisation usage will not work")
bullettrain_api | /app/src/app/settings/common.py:48: UserWarning: GA_TABLE_ID not configured, getting organisation usage will not work
bullettrain_api |   warnings.warn("GA_TABLE_ID not configured, getting organisation usage will not work")
bullettrain_api | /app/src/app/settings/common.py:262: UserWarning: `SENDGRID_API_KEY` has not been configured. You will not receive emails.
bullettrain_api |   warnings.warn(
bullettrain_api | INFO 2020-08-14 12:03:06,229 autoreload 12 140359583770432 Watching for file changes with StatReloader
bullettrain_api | /app/src/app/settings/common.py:45: UserWarning: GOOGLE_SERVICE_ACCOUNT not configured, getting organisation usage will not work
bullettrain_api |   warnings.warn("GOOGLE_SERVICE_ACCOUNT not configured, getting organisation usage will not work")
bullettrain_api | /app/src/app/settings/common.py:48: UserWarning: GA_TABLE_ID not configured, getting organisation usage will not work
bullettrain_api |   warnings.warn("GA_TABLE_ID not configured, getting organisation usage will not work")
bullettrain_api | /app/src/app/settings/common.py:262: UserWarning: `SENDGRID_API_KEY` has not been configured. You will not receive emails.
bullettrain_api |   warnings.warn(
bullettrain_api | Operations to perform:
bullettrain_api |   Apply all migrations: admin, api, audit, auth, authtoken, contenttypes, db, environments, features, organisations, permissions, projects, segments, sessions, sites, trench, users
bullettrain_api | Running migrations:
bullettrain_api |   No migrations to apply.
bullettrain_api | /app/src/app/settings/common.py:45: UserWarning: GOOGLE_SERVICE_ACCOUNT not configured, getting organisation usage will not work
bullettrain_api |   warnings.warn("GOOGLE_SERVICE_ACCOUNT not configured, getting organisation usage will not work")
bullettrain_api | /app/src/app/settings/common.py:48: UserWarning: GA_TABLE_ID not configured, getting organisation usage will not work
bullettrain_api |   warnings.warn("GA_TABLE_ID not configured, getting organisation usage will not work")
bullettrain_api | /app/src/app/settings/common.py:262: UserWarning: `SENDGRID_API_KEY` has not been configured. You will not receive emails.
bullettrain_api |   warnings.warn(
bullettrain_api |
bullettrain_api | You have requested to collect static files at the destination
bullettrain_api | location as specified in your settings:
bullettrain_api |
bullettrain_api |     /app/src/static
bullettrain_api |
bullettrain_api | This will overwrite existing files!
bullettrain_api | Are you sure you want to do this?
bullettrain_api |
bullettrain_api | Traceback (most recent call last):
bullettrain_api |   File "src/manage.py", line 11, in <module>
bullettrain_api |     execute_from_command_line(sys.argv)
bullettrain_api |   File "/app/.venv/lib/python3.8/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
bullettrain_api |     utility.execute()
bullettrain_api |   File "/app/.venv/lib/python3.8/site-packages/django/core/management/__init__.py", line 375, in execute
bullettrain_api |     self.fetch_command(subcommand).run_from_argv(self.argv)
bullettrain_api |   File "/app/.venv/lib/python3.8/site-packages/django/core/management/base.py", line 323, in run_from_argv
bullettrain_api |     self.execute(*args, **cmd_options)
bullettrain_api |   File "/app/.venv/lib/python3.8/site-packages/django/core/management/base.py", line 364, in execute
bullettrain_api |     output = self.handle(*args, **options)
bullettrain_api |   File "/app/.venv/lib/python3.8/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 185, in handle
bullettrain_api |     if input(''.join(message)) != 'yes':
bullettrain_api | EOFError: EOF when reading a line
bullettrain_api | Type 'yes' to continue, or 'no' to cancel: /app/src/app/settings/common.py:45: UserWarning: GOOGLE_SERVICE_ACCOUNT not configured, getting organisation usage will not work
bullettrain_api |   warnings.warn("GOOGLE_SERVICE_ACCOUNT not configured, getting organisation usage will not work")
bullettrain_api | /app/src/app/settings/common.py:48: UserWarning: GA_TABLE_ID not configured, getting organisation usage will not work
bullettrain_api |   warnings.warn("GA_TABLE_ID not configured, getting organisation usage will not work")
bullettrain_api | /app/src/app/settings/common.py:262: UserWarning: `SENDGRID_API_KEY` has not been configured. You will not receive emails.
bullettrain_api |   warnings.warn(
bullettrain_api | Operations to perform:
bullettrain_api |   Apply all migrations: admin, api, audit, auth, authtoken, contenttypes, db, environments, features, organisations, permissions, projects, segments, sessions, sites, trench, users
bullettrain_api | Running migrations:
bullettrain_api |   No migrations to apply.
bullettrain_api | /app/src/app/settings/common.py:45: UserWarning: GOOGLE_SERVICE_ACCOUNT not configured, getting organisation usage will not work
bullettrain_api |   warnings.warn("GOOGLE_SERVICE_ACCOUNT not configured, getting organisation usage will not work")
bullettrain_api | /app/src/app/settings/common.py:48: UserWarning: GA_TABLE_ID not configured, getting organisation usage will not work
bullettrain_api |   warnings.warn("GA_TABLE_ID not configured, getting organisation usage will not work")
bullettrain_api | /app/src/app/settings/common.py:262: UserWarning: `SENDGRID_API_KEY` has not been configured. You will not receive emails.
bullettrain_api |   warnings.warn(
bullettrain_api |
bullettrain_api | You have requested to collect static files at the destination
bullettrain_api | location as specified in your settings:
bullettrain_api |
bullettrain_api |     /app/src/static
bullettrain_api |
bullettrain_api | This will overwrite existing files!
bullettrain_api | Are you sure you want to do this?
bullettrain_api |
bullettrain_api | Traceback (most recent call last):
bullettrain_api |   File "src/manage.py", line 11, in <module>
bullettrain_api |     execute_from_command_line(sys.argv)
bullettrain_api |   File "/app/.venv/lib/python3.8/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
bullettrain_api |     utility.execute()
bullettrain_api |   File "/app/.venv/lib/python3.8/site-packages/django/core/management/__init__.py", line 375, in execute
bullettrain_api |     self.fetch_command(subcommand).run_from_argv(self.argv)
bullettrain_api |   File "/app/.venv/lib/python3.8/site-packages/django/core/management/base.py", line 323, in run_from_argv
bullettrain_api |     self.execute(*args, **cmd_options)
bullettrain_api |   File "/app/.venv/lib/python3.8/site-packages/django/core/management/base.py", line 364, in execute
bullettrain_api |     output = self.handle(*args, **options)
bullettrain_api |   File "/app/.venv/lib/python3.8/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 185, in handle
bullettrain_api |     if input(''.join(message)) != 'yes':
bullettrain_api | EOFError: EOF when reading a line
bullettrain_api | Type 'yes' to continue, or 'no' to cancel: %

createsuperuser ".venv/bin/python: no such file or directory: unknown"

First of all Flagsmith it is a great project. I am giving it a try on my local environment with docker-compose. As described in the documentation, once the docker-compose is up and running one can create an admin user by docker-compose run --rm --entrypoint ".venv/bin/python src/manage.py createsuperuser" api

Unfortunately when running it fails:

# Being at the this repository directory.
sudo docker-compose run --rm --entrypoint ".venv/bin/python src/manage.py createsuperuser" api          
Starting flagsmith_influxdb ... done
Starting flagsmith_postgres ... done
Error response from daemon: OCI runtime create failed: container_linux.go:370: starting container process caused: exec: ".venv/bin/python": stat .venv/bin/python: no such file or directory: unknown

I have worked around it either by replacing the .venv for the python binary directly:

sudo docker-compose run --rm --entrypoint "python src/manage.py createsuperuser" api

Or entering in the container and running it from there:

sudo docker exec -it flagsmith_api /bin/bash
cd app/src
python manage.py createsuperuser

Do you want me to make a PR to fix the documentation or am I missing something here?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.