156 lines
4.1 KiB
Markdown
156 lines
4.1 KiB
Markdown
# Timezone Configuration Guide
|
|
|
|
## Overview
|
|
|
|
All stacks in the Kompose project can now use a centralized timezone configuration through the root `.env` file. The default timezone is set to `Europe/Amsterdam`, but can be easily changed.
|
|
|
|
## Configuration
|
|
|
|
### Root .env File
|
|
|
|
The timezone is configured in the root `/home/valknar/Projects/kompose/.env` file:
|
|
|
|
```bash
|
|
# Default timezone for all containers
|
|
# Can be overridden in individual stack .env files if needed
|
|
# Common values: Europe/Amsterdam, Europe/Berlin, America/New_York, etc.
|
|
TIMEZONE=Europe/Amsterdam
|
|
```
|
|
|
|
### Changing the Timezone
|
|
|
|
To change the timezone for all stacks:
|
|
|
|
1. Edit the root `.env` file
|
|
2. Change the `TIMEZONE` value to your desired timezone
|
|
3. Restart the affected containers: `docker compose up -d` in each stack directory
|
|
|
|
### Common Timezone Values
|
|
|
|
- `Europe/Amsterdam`
|
|
- `Europe/Berlin`
|
|
- `Europe/London`
|
|
- `Europe/Paris`
|
|
- `America/New_York`
|
|
- `America/Los_Angeles`
|
|
- `America/Chicago`
|
|
- `Asia/Tokyo`
|
|
- `Asia/Shanghai`
|
|
- `Australia/Sydney`
|
|
|
|
For a complete list, see: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
|
|
|
|
## Adding Timezone to Stack Compose Files
|
|
|
|
### Automatic Method
|
|
|
|
Use the provided Python script to automatically add timezone configuration to all compose files:
|
|
|
|
```bash
|
|
# Make script executable (first time only)
|
|
chmod +x add-timezone.py
|
|
|
|
# Run the script
|
|
./add-timezone.py
|
|
```
|
|
|
|
The script will:
|
|
- Find all `compose.yaml` files in stack subdirectories
|
|
- Add `TZ: ${TIMEZONE:-Europe/Amsterdam}` to each service's environment section
|
|
- Create `.bak` backup files before making changes
|
|
- Skip files that already have TZ configured
|
|
- Provide a summary of changes
|
|
|
|
### Manual Method
|
|
|
|
If you prefer to add timezone manually or for new stacks, add the following to the `environment:` section of each service:
|
|
|
|
```yaml
|
|
services:
|
|
myservice:
|
|
image: some-image
|
|
environment:
|
|
TZ: ${TIMEZONE:-Europe/Amsterdam}
|
|
# ... other environment variables
|
|
```
|
|
|
|
The format `${TIMEZONE:-Europe/Amsterdam}` means:
|
|
- Use the `TIMEZONE` variable from `.env` if it exists
|
|
- Fall back to `Europe/Amsterdam` if the variable is not set
|
|
|
|
## Stack-Specific Timezone Override
|
|
|
|
If a specific stack needs a different timezone, you can override it in that stack's `.env` file:
|
|
|
|
```bash
|
|
# In /home/valknar/Projects/kompose/mystack/.env
|
|
TIMEZONE=America/New_York
|
|
```
|
|
|
|
## Verification
|
|
|
|
To verify the timezone is correctly applied to a container:
|
|
|
|
```bash
|
|
# Check the timezone of a running container
|
|
docker exec <container_name> date
|
|
|
|
# Or check the TZ environment variable
|
|
docker exec <container_name> printenv TZ
|
|
```
|
|
|
|
## Why Timezone Configuration Matters
|
|
|
|
Proper timezone configuration ensures:
|
|
- Log timestamps match your local time
|
|
- Scheduled tasks run at the expected times
|
|
- Database timestamps are consistent
|
|
- Application behavior matches user expectations
|
|
|
|
## Troubleshooting
|
|
|
|
### Container still shows wrong timezone
|
|
|
|
1. Make sure the container was restarted after adding the TZ variable:
|
|
```bash
|
|
docker compose up -d
|
|
```
|
|
|
|
2. Check if the environment variable is properly set:
|
|
```bash
|
|
docker compose config
|
|
```
|
|
|
|
3. Some containers may need additional configuration or volume mounts for timezone data
|
|
|
|
### Changes not taking effect
|
|
|
|
1. Verify the root `.env` file contains the TIMEZONE variable
|
|
2. Ensure the compose file has the TZ environment variable
|
|
3. Restart the containers with `docker compose up -d --force-recreate`
|
|
|
|
## Example: Complete Service Configuration
|
|
|
|
```yaml
|
|
services:
|
|
postgres:
|
|
image: postgres:latest
|
|
container_name: mystack_postgres
|
|
restart: unless-stopped
|
|
environment:
|
|
TZ: ${TIMEZONE:-Europe/Amsterdam}
|
|
POSTGRES_USER: ${DB_USER}
|
|
POSTGRES_PASSWORD: ${DB_PASSWORD}
|
|
volumes:
|
|
- pgdata:/var/lib/postgresql/data
|
|
networks:
|
|
- kompose_network
|
|
```
|
|
|
|
## Notes
|
|
|
|
- The timezone configuration is applied at the container level via the `TZ` environment variable
|
|
- This is the standard method supported by most Docker images
|
|
- Some specialized images may require different timezone configuration methods
|
|
- Always test timezone changes in a development environment first
|