Skip to content

codingteam/loglist

Repository files navigation

LogList Docker Image

Reincarnation of the famous service.

Additional Documentation

Database Configuration

Install PostgreSQL, create database and user for LogList. Install and activate the following extensions:

  • pgcrypto

If you are using Debian-like distro, install extensions with apt-get install postgresql-contrib. You can activate extension pgcrypto with following line in postgresql console:

CREATE EXTENSION pgcrypto;

Development Configuration

PostgreSQL container

If you want to quickly run LogList in a dockerized environment while keeping the code locally (e.g. to debug the code), run the following commands to start development PostgreSQL instance:

$ docker-compose run --publish '5432:5432' db

Environment Variables

Possible environment variables can be found in the devenv.example file. Supposed workflow:

$ cp devenv.example devenv # devenv is gitignored so you won't accidentally commit it
$ emacs devenv
  ... Modify variables ...
  ... All variable names should be self-explanatory
$ . ./devenv

The same sample setup for Windows:

PS> cp devenv.ps1.example devenv.ps1
PS> notepad devenv.ps1 # Edit the configuration...
PS> .\devenv.ps1

Running the application

To run the application in a container, run the following command:

$ docker-compose --project-name loglist up

And then open http://localhost:9000 in a browser.

To run the application locally, make sure you've set up the environment variables as described in the previous section, and then execute the following command:

$ sbt scalajvm/run

Testing

Automated test suite requires empty database. To start a new container with an empty database, you may use a command like this:

$ docker-compose run --rm --name 'loglist_test' --publish '5432:5432' db

Then, set up the environment variables and run the test suite:

$ sbt test

Publishing

This application uses Docker for deployment. To create a Docker image, use the following command:

$ docker build -t codingteam/loglist:$LOGLIST_VERSION -t codingteam/loglist:latest -f loglist.dockerfile .

(where $LOGLIST_VERSION is the version for the image to publish)

Then push the image to the Docker Hub:

$ docker login # if necessary
$ docker push codingteam/loglist:$LOGLIST_VERSION
$ docker push codingteam/loglist:latest

Deployment

Consider using the following Ansible task for deployment:

- name: Set up the application container
  community.docker.docker_container:
    name: loglist.app
    image_name_mismatch: recreate
    image: codingteam/loglist:{{ loglist_version }}
    published_ports:
      - '9000:9000'
    env:
      APPLY_EVOLUTIONS_SILENTLY: 'true'
      APPROVAL_EMAIL: '{{ loglist_secrets.approval_email.name }}'
      APPROVAL_EMAIL_PASSWORD: '{{ loglist_secrets.approval_email.password }}'
      APPROVAL_SMTP_HOST: '{{ loglist_secrets.approval_email.smtp_host }}'
      BASIC_AUTH_PASSWORD: '{{ loglist_secrets.basic_auth.password }}'
      BASIC_AUTH_USERNAME: '{{ loglist_secrets.basic_auth.username }}'
      DATABASE_URL: 'jdbc:postgresql://loglist.postgresql/loglist?user=loglist&password={{ loglist_secrets.db_password }}'
      JAVA_OPTS: '-Xmx200m -Xss512k -XX:+UseCompressedOops'
      RECAPTCHA_PRIVATE_KEY: '{{ loglist_secrets.recaptcha.private_key }}'
      RECAPTCHA_PUBLIC_KEY: '{{ loglist_secrets.recaptcha.public_key }}'
      HTTP_SECRET_KEY: '{{ loglist_secrets.http_secret_key }}'
    volumes:
      - '{{ host_config_dir }}/application.conf:/app/conf/application.conf'
    default_host_ip: ''

See a full example in the devops repository.

License

LogList is licensed under the terms of MIT License. See License.md file for details.

Some third-party components have their own licenses, please consult the corresponding site section for further details.

About

Reincarnation of the famous service

Resources

License

Stars

Watchers

Forks

Packages

No packages published