diff --git a/Makefile b/Makefile index f557603..55fb40f 100644 --- a/Makefile +++ b/Makefile @@ -18,6 +18,13 @@ build: @echo "------------------------------------------------------------------" @docker-compose build +release-multiarch: + @echo + @echo "------------------------------------------------------------------" + @echo "Building images for production mode with release tag" + @echo "------------------------------------------------------------------" + docker buildx bake -f docker-compose.release.yml --set *.platform=linux/amd64,linux/arm64 --no-cache --push + redeploy: @echo @echo "------------------------------------------------------------------" diff --git a/docker-compose.release.yml b/docker-compose.release.yml new file mode 100644 index 0000000..54ec7a4 --- /dev/null +++ b/docker-compose.release.yml @@ -0,0 +1,13 @@ +version: '3.4' +services: + imposm: + build: docker-imposm + image: meomancer/docker-osm:imposm-1.0.0 + + osmupdate: + build: docker-osmupdate + image: meomancer/docker-osm:osmupdate-1.0.0 + + osmenrich: + build: docker-osmenrich + image: meomancer/docker-osm:osmenrich-1.0.0 diff --git a/docker-compose.yml b/docker-compose.yml index ef8e82b..fd84f76 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -74,9 +74,6 @@ services: osmenrich: image: kartoza/docker-osm:osmenrich-latest - build: - context: ./docker-osmenrich - dockerfile: Dockerfile volumes: - settings-data:/home/settings - import_done:/home/import_done diff --git a/docker-imposm/Dockerfile b/docker-imposm/Dockerfile index faeae9f..85f83fc 100644 --- a/docker-imposm/Dockerfile +++ b/docker-imposm/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.19 +FROM golang:1.21 MAINTAINER Etienne Trimaille RUN apt-get update && \ @@ -9,7 +9,7 @@ RUN go install github.com/omniscale/imposm3/cmd/imposm@latest WORKDIR /home ADD requirements.txt . -RUN pip3 install -r requirements.txt +RUN pip install --break-system-packages -r requirements.txt ADD importer.py . diff --git a/docker-imposm/readme.md b/docker-imposm/readme.md new file mode 100644 index 0000000..1740967 --- /dev/null +++ b/docker-imposm/readme.md @@ -0,0 +1,32 @@ +# Docker ImpOSM3 + +> Version 1.0.0 + +This image will take care of doing the initial load for the selected region +(e.g. planet, or a country such as Malawi) into your database. It will then +apply, at a regular interval (default is 2 minutes), any diff that arrives +in the /home/import_queue folder to the postgis OSM database. The diffs +are fetched by a separate container (see osm_update container). + +The container will look for an OSM file (*.pbf) and its state file +(*.state.txt) in BASE_PBF. + +With -e, you can add some settings : + +```bash + - TIME = 120, seconds between 2 executions of the script + - POSTGRES_USER = docker, default user + - POSTGRES_PASS = docker, default password + - POSTGRES_HOST = db + - POSTGRES_PORT = 5432 + - SETTINGS = settings, folder for settings (with *.json and *.sql) + - CACHE = cache, folder for caching + - BASE_PBF = base_pbf, folder the OSM file + - IMPORT_DONE = import_done, folder for diff which has been imported + - IMPORT_QUEUE = import_queue, folder for diff which hasn't been imported yet + - SRID = 4326, it can be 3857 + - OPTIMIZE = false, check (Imposm)[http://imposm.org/docs/imposm3/latest/tutorial.html#optimize] + - DBSCHEMA_PRODUCTION = public, check (Imposm)[http://imposm.org/docs/imposm3/latest/tutorial.html#deploy-production-tables] + - DBSCHEMA_IMPORT = import, check (Imposm)[http://imposm.org/docs/imposm3/latest/tutorial.html#deploy-production-tables] + - DBSCHEMA_BACKUP = backup, check (Imposm)[http://imposm.org/docs/imposm3/latest/tutorial.html#deploy-production-tables] +``` diff --git a/docker-osmenrich/readme.md b/docker-osmenrich/readme.md index e4b6b16..5bf8879 100644 --- a/docker-osmenrich/readme.md +++ b/docker-osmenrich/readme.md @@ -1,4 +1,7 @@ -# Docker-osmenrich +# Docker OSMENRICH + +> Version 1.0.0 + Docker osm-enrich is the extension for docker osm to get the changeset of the osm data. It will get the data from osm API and also get the update data from files that generated from docker-osmupdate diff --git a/docker-osmupdate/readme.md b/docker-osmupdate/readme.md new file mode 100644 index 0000000..90e0f69 --- /dev/null +++ b/docker-osmupdate/readme.md @@ -0,0 +1,48 @@ +# Docker OSM Update + +> Version 1.0.0 + +This docker image, when run will regularly fetch any new diff file for all the +changes that have happened in the world over the update interval. + +You can also specify a custom url for fetching the diff if you wish to retrieve +regional diffs rather than the global one. + +You can specify a polygonal area for the diff so that it will only apply features +from the diff that fall within that area. For example providing a polygon of the +borders of Malawi will result in only Malawi features being extracted from the diff. + +**Note:** the diff retrieved and options specified here are not related to the +initial base map used - so for example if your initial base map is for Malawi and +you specify a diff area in Botswana, updated features in Botswana will be applied +to your base map which only includes features from Malawi. For this reason, take +care to ensure that your diff area coincides with the region covered by your +original base map. + +Once the diff has been downloaded, it is placed into /home/import_queue where +it will be picked up by the long running imposm3 container, which will apply +the diff to the database. + +You should have 3 folders : osm_pbf, import_queue, import_done + +Put a state file in base-pbf like this one : +http://download.openstreetmap.fr/extracts/africa/south_africa.state.txt + +```bash +docker build -t osmupdate . +docker run -v $('pwd')import-queue/:/home/import-queue -v $('pwd')base-pbf/:/home/base-pbf -v $('pwd')import-done/:/home/import-done -d osmupdate +``` + +With -e, you can add some settings : + +```bash + - MAX_DAYS = 100, the maximum time range to assemble a cumulated changefile. + - DIFF = sporadic, osmupdate uses a combination of minutely, hourly and daily changefiles. This value can be minute, hour, day or sporadic. + - MAX_MERGE = 7, argument to determine the maximum number of parallely processed changefiles. + - COMPRESSION_LEVEL = 1, define level for gzip compression. values between 1 (low compression but fast) and 9 (high compression but slow) + - BASE_URL = http://planet.openstreetmap.org/replication/, change the URL to use a custom URL to fetch regional file updates. + - IMPORT_QUEUE = import_queue + - IMPORT_DONE = import_done + - OSM_PBF = osm_pbf + - TIME = 120, seconds between two executions of the script +``` \ No newline at end of file diff --git a/readme.md b/readme.md index 22619ef..dda5326 100644 --- a/readme.md +++ b/readme.md @@ -300,6 +300,20 @@ With -e, you can add some settings : You can adjust these preferences in the ```docker-compose.yml``` file provided in this repository. +### Docker OSM Enrich + +Docker osm-enrich is the extension for docker osm to get the changeset of the osm data. +It will get the data from osm API and also get the update data from files that generated from docker-osmupdate + +- data is new (changeset is null) : get from docker osm +- data is exist but need to check the recent changeset : get data from file generated from osmupdate, update into database + +osmenrich will create new fields which are: +- changeset_id +- changeset_timestamp +- changeset_version +- changeset_user + # PostGIS For environment variables associated with `docker-postgis` refer to [docker postgis repository](https://github.com/kartoza/docker-postgis)