Running with Docker
Since v2, Tolgee runs PostgreSQL database in its container by default. To disable embedded Postgres, set
tolgee.postgres-autostart.enabled
property to false
. Then you can use external database as
described below.
Running with Docker Compose (recommended)
The recommended way to run Tolgee is using Docker Compose with a configuration YAML file. This approach provides better configuration management and is more suitable for production environments.
To start, create and enter a folder to store Tolgee related files:
mkdir tolgee && cd tolgee
Create a config.yaml
file containing your configuration properties. You can find the list of all properties in configuration reference.
tolgee:
authentication:
enabled: true
initial-password: admin
initial-username: admin
jwt-secret: my_jwt_secret
machine-translation:
google:
api-key: my_google_api_key
smtp:
auth: true
from: Tolgee <no-reply@mydomain.com>
host: email-smtp.regional-region.amazonaws.com
password: 'omg/my/password'
port: 465
ssl-enabled: true
username: user@company.com
Create a file named docker-compose.yml
containing the following content:
services:
app:
image: tolgee/tolgee
volumes:
- ./data:/data
- ./config.yaml:/config.yaml
ports:
- '25432:25432' # if you would like to access the DB
- '8080:8080'
environment:
spring.config.additional-location: file:///config.yaml
Now you can start Tolgee by running:
docker-compose up -d
You should be able to access Tolgee web application on http://localhost:8080
Alternative: Configuring using environmental variables
Alternatively, you can provide the configuration variables using environment variables or using .env
file instead of the YAML configuration file.
services:
app:
image: tolgee/tolgee
volumes:
- ./data:/data
ports:
- '25432:25432'
- '8080:8080'
env_file:
- .env
To provide a configuration, add following .env file.
TOLGEE_AUTHENTICATION_ENABLED=true
TOLGEE_AUTHENTICATION_INITIAL_PASSWORD=admin
TOLGEE_AUTHENTICATION_INITIAL_USERNAME=admin
TOLGEE_AUTHENTICATION_JWT_SECRET=my_jwt_secret
TOLGEE_MACHINE_TRANSLATION_GOOGLE_API_KEY=my_google_api_key
TOLGEE_SMTP_AUTH=true
TOLGEE_SMTP_FROM=Tolgee <no-reply@mydomain.com>
TOLGEE_SMTP_HOST=email-smtp.regional-region.amazonaws.com
TOLGEE_SMTP_PASSWORD=omg/my/password
TOLGEE_SMTP_PORT=465
TOLGEE_SMTP_SSL_ENABLED=true
TOLGEE_SMTP_USERNAME=user@company.com
Similarly, you can define other configuration properties.
Your initial username is admin
. Initial password is automatically generated and stored in /data/initial.pwd file in the
Tolgee container. You can print it by executing this:
cat data/initial.pwd
Running Tolgee in single container (alternative)
For simple local development or testing, you can run Tolgee in a single container with embedded PostgreSQL database.
docker run -v tolgee_data:/data/ -p 8085:8080 tolgee/tolgee
This will:
- mount tolgee_data volume into it's directory inside the container
- expose tolgee container port on port 8085
- run the image!
Now you should be able to access Tolgee web application on http://localhost:8085
Running with docker compose with external PostgreSQL database
For some users, running the PostgreSQL database in a separate container is beneficial. Here is how you can do it.
services:
app:
image: tolgee/tolgee:latest
volumes:
- ./data:/data
- ./config.yaml:/config.yaml
ports:
- '8089:8080'
environment:
spring.config.additional-location: file:///config.yaml # <--- this line
deploy:
restart_policy:
condition: on-failure
depends_on:
- db
db:
image: postgres:13
environment:
POSTGRES_DB: postgres
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
volumes:
- ./data/postgres:/var/lib/postgresql/data
ports:
- '25432:5432' # <-- If you want to access your postgres from outside of docker network
This configuration creates a separate Postgres 13 container. Now, you have to modify the Tolgee configuration to use this database.
tolgee:
postgres-autostart:
enabled: false
spring:
datasource:
url: jdbc:postgresql://db:5432/postgres
username: postgres
password: postgres
Don't forget to change the POSTGRES_USER
, POSTGRES_PASSWORD
, username
and password
properties to your values.