Skip to content

Instantly share code, notes, and snippets.

@mcoms
Created June 23, 2016 16:29
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save mcoms/8b8ec6a6bbb0fbb860cb9f30e3439546 to your computer and use it in GitHub Desktop.
Save mcoms/8b8ec6a6bbb0fbb860cb9f30e3439546 to your computer and use it in GitHub Desktop.
Dockerfile and docker-compose for Traccar GPS software
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE properties SYSTEM 'http://java.sun.com/dtd/properties.dtd'>
<properties>
<!-- SERVER CONFIG -->
<entry key='web.enable'>true</entry>
<entry key='web.port'>8082</entry>
<entry key='web.path'>/usr/src/traccar/web</entry>
<entry key='geocoder.enable'>true</entry>
<entry key='geocoder.type'>google</entry>
<entry key='logger.enable'>true</entry>
<entry key='logger.level'>all</entry>
<entry key='logger.file'>/usr/src/traccar/logs/traccar.log</entry>
<!-- DATABASE CONFIG -->
<entry key='database.driver'>org.h2.Driver</entry>
<entry key='database.url'>jdbc:h2:/usr/src/traccar/data/db</entry>
<entry key='database.user'>sa</entry>
<entry key='database.password'></entry>
<entry key='database.changelog'>/usr/src/traccar/data/changelog-master.xml</entry>
<entry key='database.selectServers'>
SELECT * FROM server;
</entry>
<entry key='database.updateServer'>
UPDATE server SET
registration = :registration,
readonly = :readonly,
map = :map,
bingKey = :bingKey,
mapUrl = :mapUrl,
distanceUnit = :distanceUnit,
speedUnit = :speedUnit,
latitude = :latitude,
longitude = :longitude,
zoom = :zoom,
twelveHourFormat = :twelveHourFormat
WHERE id = :id;
</entry>
<entry key='database.loginUser'>
SELECT * FROM users
WHERE email = :email;
</entry>
<entry key='database.selectUser'>
SELECT * FROM users
WHERE id = :id;
</entry>
<entry key='database.selectUsersAll'>
SELECT * FROM users;
</entry>
<entry key='database.insertUser'>
INSERT INTO users (name, email, hashedPassword, salt, admin, map, distanceUnit, speedUnit, latitude, longitude, zoom, twelveHourFormat)
VALUES (:name, :email, :hashedPassword, :salt, :admin, :map, :distanceUnit, :speedUnit, :latitude, :longitude, :zoom, :twelveHourFormat);
</entry>
<entry key='database.updateUser'>
UPDATE users SET
name = :name,
email = :email,
admin = :admin,
map = :map,
distanceUnit = :distanceUnit,
speedUnit = :speedUnit,
latitude = :latitude,
longitude = :longitude,
zoom = :zoom,
twelveHourFormat = :twelveHourFormat
WHERE id = :id;
</entry>
<entry key='database.updateUserPassword'>
UPDATE users SET hashedPassword = :hashedPassword, salt = :salt WHERE id = :id;
</entry>
<entry key='database.deleteUser'>
DELETE FROM users WHERE id = :id;
</entry>
<entry key='database.selectDevicePermissions'>
SELECT userId, deviceId FROM user_device;
</entry>
<entry key='database.selectGroupPermissions'>
SELECT userId, groupId FROM user_group;
</entry>
<entry key='database.selectDevicesAll'>
SELECT * FROM devices;
</entry>
<entry key='database.insertDevice'>
INSERT INTO devices (name, uniqueId, groupId) VALUES (:name, :uniqueId, :groupId);
</entry>
<entry key='database.updateDevice'>
UPDATE devices SET name = :name, uniqueId = :uniqueId, groupId = :groupId WHERE id = :id;
</entry>
<entry key='database.updateDeviceStatus'>
UPDATE devices SET status = :status, lastUpdate = :lastUpdate WHERE id = :id;
</entry>
<entry key='database.deleteDevice'>
DELETE FROM devices WHERE id = :id;
</entry>
<entry key='database.linkDevice'>
INSERT INTO user_device (userId, deviceId) VALUES (:userId, :deviceId);
</entry>
<entry key='database.unlinkDevice'>
DELETE FROM user_device WHERE userId = :userId AND deviceId = :deviceId;
</entry>
<entry key='database.selectGroupsAll'>
SELECT * FROM groups;
</entry>
<entry key='database.insertGroup'>
INSERT INTO groups (name) VALUES (:name);
</entry>
<entry key='database.updateGroup'>
UPDATE groups SET name = :name, groupId = :groupId WHERE id = :id;
</entry>
<entry key='database.deleteGroup'>
DELETE FROM groups WHERE id = :id;
</entry>
<entry key='database.linkGroup'>
INSERT INTO user_group (userId, groupId) VALUES (:userId, :groupId);
</entry>
<entry key='database.unlinkGroup'>
DELETE FROM user_group WHERE userId = :userId AND groupId = :groupId;
</entry>
<entry key='database.selectPositions'>
SELECT * FROM positions WHERE deviceId = :deviceId AND fixTime BETWEEN :from AND :to ORDER BY fixTime;
</entry>
<entry key='database.insertPosition'>
INSERT INTO positions (deviceId, protocol, serverTime, deviceTime, fixTime, valid, latitude, longitude, altitude, speed, course, address, attributes)
VALUES (:deviceId, :protocol, :now, :deviceTime, :fixTime, :valid, :latitude, :longitude, :altitude, :speed, :course, :address, :attributes);
</entry>
<entry key='database.selectLatestPositions'>
SELECT * FROM positions WHERE id IN (SELECT positionId FROM devices);
</entry>
<entry key='database.updateLatestPosition'>
UPDATE devices SET positionId = :id WHERE id = :deviceId;
</entry>
<!-- PROTOCOL CONFIG -->
<entry key='gps103.port'>5001</entry>
<entry key='tk103.port'>5002</entry>
<entry key='gl100.port'>5003</entry>
<entry key='gl200.port'>5004</entry>
<entry key='t55.port'>5005</entry>
<entry key='xexun.port'>5006</entry>
<entry key='xexun.extended'>false</entry>
<entry key='totem.port'>5007</entry>
<entry key='enfora.port'>5008</entry>
<entry key='meiligao.port'>5009</entry>
<entry key='trv.port'>5010</entry>
<entry key='suntech.port'>5011</entry>
<entry key='progress.port'>5012</entry>
<entry key='h02.port'>5013</entry>
<entry key='jt600.port'>5014</entry>
<entry key='huabao.port'>5015</entry>
<entry key='v680.port'>5016</entry>
<entry key='pt502.port'>5017</entry>
<entry key='tr20.port'>5018</entry>
<entry key='navis.port'>5019</entry>
<entry key='meitrack.port'>5020</entry>
<entry key='skypatrol.port'>5021</entry>
<entry key='gt02.port'>5022</entry>
<entry key='gt06.port'>5023</entry>
<entry key='megastek.port'>5024</entry>
<entry key='navigil.port'>5025</entry>
<entry key='gpsgate.port'>5026</entry>
<entry key='teltonika.port'>5027</entry>
<entry key='mta6.port'>5028</entry>
<entry key='tzone.port'>5029</entry>
<entry key='tlt2h.port'>5030</entry>
<entry key='taip.port'>5031</entry>
<entry key='wondex.port'>5032</entry>
<entry key='cellocator.port'>5033</entry>
<entry key='galileo.port'>5034</entry>
<entry key='ywt.port'>5035</entry>
<entry key='tk102.port'>5036</entry>
<entry key='intellitrac.port'>5037</entry>
<entry key='gpsmta.port'>5038</entry>
<entry key='wialon.port'>5039</entry>
<entry key='carscop.port'>5040</entry>
<entry key='apel.port'>5041</entry>
<entry key='manpower.port'>5042</entry>
<entry key='globalsat.port'>5043</entry>
<entry key='atrack.port'>5044</entry>
<entry key='pt3000.port'>5045</entry>
<entry key='ruptela.port'>5046</entry>
<entry key='topflytech.port'>5047</entry>
<entry key='laipac.port'>5048</entry>
<entry key='aplicom.port'>5049</entry>
<entry key='gotop.port'>5050</entry>
<entry key='sanav.port'>5051</entry>
<entry key='gator.port'>5052</entry>
<entry key='noran.port'>5053</entry>
<entry key='m2m.port'>5054</entry>
<entry key='osmand.port'>5055</entry>
<entry key='easytrack.port'>5056</entry>
<entry key='gpsmarker.port'>5057</entry>
<entry key='khd.port'>5058</entry>
<entry key='piligrim.port'>5059</entry>
<entry key='stl060.port'>5060</entry>
<entry key='cartrack.port'>5061</entry>
<entry key='minifinder.port'>5062</entry>
<entry key='haicom.port'>5063</entry>
<entry key='eelink.port'>5064</entry>
<entry key='box.port'>5065</entry>
<entry key='freedom.port'>5066</entry>
<entry key='telic.port'>5067</entry>
<entry key='trackbox.port'>5068</entry>
<entry key='visiontek.port'>5069</entry>
<entry key='orion.port'>5070</entry>
<entry key='riti.port'>5071</entry>
<entry key='ulbotech.port'>5072</entry>
<entry key='tramigo.port'>5073</entry>
<entry key='tr900.port'>5074</entry>
<entry key='ardi01.port'>5075</entry>
<entry key='xt013.port'>5076</entry>
<entry key='autofon.port'>5077</entry>
<entry key='gosafe.port'>5078</entry>
<entry key='tt8850.port'>5079</entry>
<entry key='bce.port'>5080</entry>
<entry key='xirgo.port'>5081</entry>
<entry key='calamp.port'>5082</entry>
<entry key='mtx.port'>5083</entry>
<entry key='tytan.port'>5084</entry>
<entry key='avl301.port'>5085</entry>
<entry key='castel.port'>5086</entry>
<entry key='mxt.port'>5087</entry>
<entry key='cityeasy.port'>5088</entry>
<entry key='aquila.port'>5089</entry>
<entry key='flextrack.port'>5090</entry>
<entry key='blackkite.port'>5091</entry>
<entry key='adm.port'>5092</entry>
<entry key='watch.port'>5093</entry>
<entry key='t800x.port'>5094</entry>
<entry key='upro.port'>5095</entry>
<entry key='auro.port'>5096</entry>
<entry key='disha.port'>5097</entry>
<entry key='thinkrace.port'>5098</entry>
<entry key='pathaway.port'>5099</entry>
<entry key='arnavi.port'>5100</entry>
<entry key='nvs.port'>5101</entry>
<entry key='kenji.port'>5102</entry>
<entry key='astra.port'>5103</entry>
<entry key='homtecs.port'>5104</entry>
<entry key='fox.port'>5105</entry>
<entry key='gnx.port'>5106</entry>
<entry key='arknav.port'>5107</entry>
<entry key='supermate.port'>5108</entry>
<entry key='appello.port'>5109</entry>
</properties>
version: '2'
services:
traccar:
build: .
ports:
- '8082:8082'
- '5001-5109:5001-5109'
FROM java:alpine
RUN mkdir -p /usr/src/traccar
COPY . /usr/src/traccar
VOLUME /usr/src/traccar/data
WORKDIR /usr/src/traccar
EXPOSE 8082
EXPOSE 5001-5109
CMD ["java", "-jar", "tracker-server.jar", "conf/traccar.xml"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment