Comments (17)
Hi guys,
I try to deploy traccar latest version on docker and figure some issues mentionned aboved.
Anyway, the connection to the database work only with a static IP in my case.
This is my compose file if it can help.
version: "3"
services:
traccar-db:
image: yobasystems/alpine-mariadb
container_name: traccar-db
command: --default-authentication-plugin=mysql_native_password
restart: always
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=XXXXX
- MYSQL_DATABASE=YYYYYY
- MYSQL_USER=XXXXX
- MYSQL_PASSWORD=XXXXX
networks:
gps:
ipv4_address: 192.168.55.9
traccar:
image: traccar/traccar:latest
container_name: traccar
depends_on:
- traccar-db
restart: always
configs:
- source: traccar_xml
target: /opt/traccar/conf/traccar.xml
volumes:
- type: bind
source: ./traccar/logs
target: /opt/traccar/logs
ports:
- "8090:8082"
environment:
- MYSQL_DATABASE=YYYYYY
- MYSQL_USER=XXXXX
- MYSQL_PASSWORD=XXXXX
networks:
gps:
ipv4_address: 192.168.55.10
networks:
gps:
driver: bridge
ipam:
driver: default
config:
- subnet: 192.168.55.0/24
gateway: 192.168.55.1
configs:
traccar_xml:
file: traccar.xml
and the config file
<entry key='database.driver'>com.mysql.cj.jdbc.Driver</entry>
<entry key='database.url'>jdbc:mysql://192.168.55.9:3306/YYYYYY?serverTimezone=UTC&allowPublicKeyRetrieval=true&useSSL=true&allowMultiQueries=true&autoReconnect=true&useUnicode=yes&characterEncoding=UTF-8&sessionVariables=sql_mode=''</entry>
<entry key='database.user'>XXXXX</entry>
<entry key='database.password'>XXXXX</entry>
from traccar-docker.
And also not directly related but it was the main reason I wanted to move from embedded h2 db to an external
To backup traccar with a date timestamp in the SQL file in order to have db "snapshots"
docker-compose -f compose-file.yml exec dbname mysqldump -uroot -pYOUR_MARIADB_ROOT_PASSWORD --all-databases > dump-$(date +%F_%H-%M-%S).sql
And restore
docker-compose -f compose-file.yml exec -T dbname mysql -uroot -pYOUR_MARIADB_ROOT_PASSWORD < mariadb-dump.sql
from traccar-docker.
volumes:
mysql-data:
mysql:
logs:
Dont think you need these with your current mounting options. And I think the code shows an additonal '-' to much :)
from traccar-docker.
Depends on your needs.
An example with traccar + separate MariaDB.
version: '2.4'
services:
mariadb:
container_name: mariadb
hostname: mariadb
restart: unless-stopped
image: yobasystems/alpine-mariadb
volumes:
- ./mariadb:/var/lib/mysql
environment:
TZ: Europe/Amsterdam
#MYSQL_RANDOM_ROOT_PASSWORD: "yes"
MYSQL_ROOT_PASSWORD: <root_password>
MYSQL_DATABASE: <username>
MYSQL_USER: <username>
MYSQL_PASSWORD: <password>
ports:
- 3306:3306
healthcheck:
test: mysqladmin ping -h 127.0.0.1 -u $$MYSQL_USER --password=$$MYSQL_PA$
interval: 60s
timeout: 5s
retries: 5
#start_period: 30s
networks:
- Iot
traccar:
container_name: traccar
hostname: traccar
restart: unless-stopped
image: traccar/traccar:4.15-ubuntu
ports:
- 5002:5002/tcp
- 5002:5002/udp
- 82:8082
volumes:
- ./traccar/conf/traccar.xml:/opt/traccar/conf/traccar.xml
- ./traccar/logs:/opt/traccar/logs:rw
depends_on:
- mariadb
networks:
- Iot
networks:
Iot:
driver: bridge
enable_ipv6: false
ipam:
config:
- subnet: 10.0.1.0/29
from traccar-docker.
Many thanks for sharing the Docker compose, I’m still learning Docker would you be able to explain a few things.
-
the
networks
part at the bottom ? I’d like my instance to be on the same local network (LAN) as all my other devices which is 192.168.1.1 ? Do I simply change the IP ? -
for the local volumes, where do i find the ‘ traccar.xml’ file ?
-
when it comes the mariadB, where do I find all the required passwords, root specifically or do I just assign them anything ?
from traccar-docker.
@sincze thanks for the compose file
To make your answer a bit more complete I'll add what I had to do beyond using your compose.
docker network inspect Iot
under "Name": "Iot",we need "Subnet": "10.0.1.0/29"
and under "Iot",
we need "IPv4Address": " 10.0.1.2",
subnet goes to
config:
- subnet: 10.0.1.0/29
in docker-compose
and
IPv4Address goes to jdbc:mysql:// 10.0.1.2:3306/traccar-db in /opt/traccar/conf/traccar.xml:ro (.traccar/conf/traccar.xmll in the example)
open a root mysql shell
docker exec -it mariadb mysql -u root -p
type your root password
Hit enter
CREATE DATABASE IF NOT EXISTS traccar-db
hit enter
grant all privileges on `db_name`.* TO `user_name'@'%` identified by `root_pass`
hit enter
flush privileges
hit enter
ALTER DATABASE traccar CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
hit enter
\q
hit enter
docker-compose up -d
from traccar-docker.
No problem. Great you liked it. That is why I share to help others!
I think the DB was created automatically, but it was some time ago. Can do a check if you want on a spare docker machine.
from traccar-docker.
Yeah I actually thought that docker-compose should create user and database
My networking databases and docker knowledge is pretty basic though
And I tried many things to spin up the containers
(My issue is here #103 (comment))
So its likely that I miss estimated things
from traccar-docker.
Hi @ippocratis
By any chance, is there an updated compose file you could post?
Also, as I want to have this instance on the same network as my primary LAN, do I just change the ip4 subnet to my ip, e.g. 192.168.1.1/29 ?
from traccar-docker.
docker network ls
verify the the network name as.provided in the docker-compose is running for example traccar-trc
docker network inspect traccar_trc
under "Name": "traccar_trc",we need "Subnet": "192.168.112.0/20"
and under "traccar-db",
we need "IPv4Address": "192.168.112.2/20",
subnet goes to
config:
- subnet: 192.168.112.0/20
in docker-compose
and
IPv4Address goes to
jdbc:mysql://192.168.112.2:3306/traccar-db
Like jdbc:mysql://docker-bridge-ipv4:container-internal-port/database-name
in /opt/traccar/conf/traccar.xml:ro
So you will actually use the docker internal bridge ip's not the host
My docker-compose is no diferent than what @sincze provided
I just used the debian arm64 image instead of Ubuntu
Used the android ports as I only use the android client
in traccar hostname I used my ddns domain name which I use to access traccar from outside my lan
Added command: --default-authentication-plugin=mysql_native_password as I want yo add user/db
and added MYSQL_DATABASE=, MYSQL_USER= , MYSQL_PASSWORD= all to traccar-db environment together with MYSQL_ROOT_PASSWORD=
All with trial and error
from traccar-docker.
The compose.yml for reference
version: "3"
services:
traccar-db:
image: yobasystems/alpine-mariadb
container_name: traccar-db
command: --default-authentication-plugin=mysql_native_password
restart: always
volumes:
- /run/media/ippo/TOSHIBA/traccar/mysql-data:/var/lib/mysql
- /run/media/ippo/TOSHIBA/traccar/mysql:/etc/mysql/conf.d
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=xxx
- MYSQL_DATABASE=traccar-db
- MYSQL_USER=xxx
- MYSQL_PASSWORD=xxx
networks:
- trc2
traccar:
image: traccar/traccar:debian
hostname: XXX.XXX.com
container_name: traccar
depends_on:
- traccar-db
restart: always
volumes:
- /run/media/ippo/TOSHIBA/traccar/conf/traccar.xml:/opt/traccar/conf/traccar.xml:ro
- /run/media/ippo/TOSHIBA/traccar/logs:/opt/traccar/logs:rw
ports:
- "5055:5055"
- "82:8082"
networks:
- trc2
networks:
trc2:
driver: bridge
enable_ipv6: false
ipam:
config:
- subnet: 192.168.112.0/20
from traccar-docker.
@sincze
cleaned it up
thanks
from traccar-docker.
Also tried the official mariadb image but had innodb general errors
maybe it needs removing containers and volumes i'm not sure I'll do some tests later at some point.
I like the yobasystems alpine-mariadb image as its more minimal but the official looks more frequently updated
from traccar-docker.
I'm trying to implement the same idea but with them segregated from my Synology NAS using macvlans although I'm running into errors with the traccar container saying they cant reach the data base. Any ideas as to what could be wrong here?
traccarlogs.csv
logs look like they cycle '[Guice/ErrorInCustomProvider]: HikariPool$PoolInitializationException: Failed to initialize pool: Could not create connection to database server. Attempted reconnect 3 times. Giving up.' and end with 'Caused by: java.net.ConnectException: Connection refused (Connection refused)'
services:
traccar-db:
image: yobasystems/alpine-mariadb
container_name: traccar-db
command: --default-authentication-plugin=mysql_native_password
restart: unless-stopped
volumes:
- /volume1/docker/DockerComposeTesting/mariadb:/var/lib/mysql
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=XXXX
- MYSQL_DATABASE=XXXX
- MYSQL_USER=XXXX
- MYSQL_PASSWORD=XXXX
networks:
mac:
ipv4_address: 192.168.2.2
traccar:
image: traccar/traccar:latest
container_name: traccar
depends_on:
- traccar-db
restart: unless-stopped
volumes:
- /volume1/docker/DockerComposeTesting/logs:/opt/traccar/logs:rw
- /volume1/docker/DockerComposeTesting/traccar.xml:/opt/traccar/conf/traccar.xml:ro
ports:
- "8090:8082"
environment:
- MYSQL_DATABASE=XXXX
- MYSQL_USER=XXXX
- MYSQL_PASSWORD=XXXX
networks:
mac:
ipv4_address: 192.168.2.3
networks:
mac:
driver: macvlan
driver_opts:
parent: ovs_eth1
ipam:
config:
- subnet: 192.168.2.1/24
gateway: 192.168.2.1
ip_range: 192.168.2.3/30
traccar xml file:
<entry key='database.driver'>com.mysql.cj.jdbc.Driver</entry>
<entry key='database.url'>jdbc:mysql://192.168.2.2:3306/XXXX?serverTimezone=UTC&allowPublicKeyRetrieval=true&useSSL=true&allowMultiQueries=true&autoReconnect=true&useUnicode=yes&characterEncoding=UTF-8&sessionVariables=sql_mode=''</entry>
<entry key='database.user'>XXXX</entry>
<entry key='database.password'>XXXX</entry>
from traccar-docker.
Here is docker compose I'm using for my traccar instance. Works rock solid using PostgreSQL.
docker-compose.yml
services:
traccar_postgresql:
image: docker.io/library/postgres:16-alpine
container_name: traccar_postgresql
restart: unless-stopped
healthcheck:
test:
- CMD-SHELL
- pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}
start_period: 20s
interval: 30s
retries: 5
timeout: 5s
volumes:
- /mnt/data/traccar/database:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_DB=${POSTGRES_DB}
networks:
- backend
traccar:
image: traccar/traccar:6-alpine
container_name: traccar
restart: unless-stopped
volumes:
- /mnt/data/traccar/logs:/opt/traccar/logs:rw
- /mnt/data/traccar/traccar.xml:/opt/traccar/conf/traccar.xml:ro
depends_on:
- traccar_postgresql
ports:
- 5013:5013 # I only use this port for my tracker
labels:
- traefik.enable=true
- traefik.http.routers.traccar.rule=Host(`traccar.local.xxx.com`)
- traefik.http.routers.traccar.entrypoints=https
- traefik.http.routers.traccar.tls=true
- traefik.http.routers.traccar.middlewares=secured@file
- traefik.http.services.traccar.loadbalancer.server.port=8082
- traefik.docker.network=frontend
networks:
- backend
- frontend
networks:
frontend:
external: true
backend:
external: true
.env file
POSTGRES_PASSWORD=XXXXXXXXXXXXX
POSTGRES_USER=traccar-admin
POSTGRES_DB=traccar-db
traccar.xml
<entry key='database.driver'>org.postgresql.Driver</entry>
<entry key='database.url'>jdbc:postgresql://traccar_postgresql/traccar-db</entry>
<entry key='database.user'>traccar-admin</entry>
<entry key='database.password'>XXXXXXXXXXXXX</entry>
from traccar-docker.
This is great - @mrskizzex could you share your sanitized Traefik Middleware file too? I think thats the part im getting stuck on. Thanks
from traccar-docker.
Well sure but it's really up to you how to set up traefik. I followed this tutorial how to set it up https://www.youtube.com/watch?v=n1vOfdz5Nm8
config.txt
traefik.txt
from traccar-docker.
Related Issues (20)
- WebUI shows 404 - Not found HOT 3
- can't connect to mysql/postgres HOT 3
- Docker-compose path/fiile problem. "Are you trying to mount a directory onto a file?" HOT 3
- MySQL DB is locked HOT 1
- Docker Hub alternative HOT 4
- Cant get traccar.xml HOT 2
- Docker - No Matching Manifest HOT 4
- version 5.8 HOT 1
- MariaDB 11.0.2 connection error - Got an error reading communication packets HOT 3
- Container keeps restarting and udp port not working HOT 1
- Container with the preview version to solve the MariaDB 11 problem HOT 3
- Can't pull image on Raspberry Pi - archive/tar: invalid tar header.
- Update Docker image to OpenJDK 17 HOT 2
- GUI failed login requests not being logged HOT 1
- Can't add new connection to device HOT 1
- embed site to wordpress HOT 1
- How to increase java RAM limit in existing Traccar docker container HOT 2
- Support for environment variables and files HOT 5
- change Java heap size HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from traccar-docker.