# Define the services (containers) for your application services: # The name of our service time-tracker-app: # Build the Docker image from the Dockerfile in the current directory (.) build: . # Name the container for easier management container_name: time-tracker # Restart policy: always restart the container if it stops. # This is useful for production environments to ensure the app is always running. restart: always # Keep the container running by allocating a pseudo-TTY tty: true # Port mapping: map port 3000 on the host machine to port 3000 in the container. # This allows you to access the application via http://:3000 ports: - "3004:3000" # Volume mapping: persist the database file. # This creates a 'data' folder in your project directory on the host machine # and links it to the /usr/src/app/data directory inside the container. # The timetracker.db will be stored here, ensuring data is not lost. volumes: - ./data:/usr/src/app/data # Environment file: tells Docker Compose to use the .env file in the # current directory to set environment variables inside the container. env_file: - .env network_mode: bridge