diff --git a/Dockerfile b/Dockerfile index 04c08d2c..cb3d6621 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,21 +1,42 @@ FROM python:3.6-slim-stretch as build # Setup build dependencies -RUN apt update -RUN apt install -y python3-dev gcc libsqlite3-mod-spatialite +RUN apt update \ +&& apt install -y python3-dev build-essential wget libxml2-dev libproj-dev libgeos-dev libsqlite3-dev zlib1g-dev pkg-config \ + && apt clean + + +RUN wget "https://www.sqlite.org/2018/sqlite-autoconf-3230100.tar.gz" && tar xzf sqlite-autoconf-3230100.tar.gz \ + && cd sqlite-autoconf-3230100 && ./configure --disable-static --enable-fts5 --enable-json1 CFLAGS="-g -O2 -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_FTS4=1 -DSQLITE_ENABLE_RTREE=1 -DSQLITE_ENABLE_JSON1" \ + && make && make install + +RUN wget "https://www.gaia-gis.it/gaia-sins/freexl-1.0.5.tar.gz" && tar zxf freexl-1.0.5.tar.gz \ + && cd freexl-1.0.5 && ./configure && make && make install + +RUN wget "https://www.gaia-gis.it/gaia-sins/libspatialite-4.4.0-RC0.tar.gz" && tar zxf libspatialite-4.4.0-RC0.tar.gz \ + && cd libspatialite-4.4.0-RC0 && ./configure && make && make install + +RUN wget "https://www.gaia-gis.it/gaia-sins/readosm-1.1.0.tar.gz" && tar zxf readosm-1.1.0.tar.gz && cd readosm-1.1.0 && ./configure && make && make install + +RUN wget "https://www.gaia-gis.it/gaia-sins/spatialite-tools-4.4.0-RC0.tar.gz" && tar zxf spatialite-tools-4.4.0-RC0.tar.gz \ + && cd spatialite-tools-4.4.0-RC0 && ./configure && make && make install + + # Add local code to the image instead of fetching from pypi. -ADD . /datasette +COPY . /datasette RUN pip install /datasette FROM python:3.6-slim-stretch -# Copy python dependencies -COPY --from=build /usr/local/lib/python3.6/site-packages /usr/local/lib/python3.6/site-packages +# Copy python dependencies and spatialite libraries +COPY --from=build /usr/local/lib/ /usr/local/lib/ # Copy executables COPY --from=build /usr/local/bin /usr/local/bin # Copy spatial extensions COPY --from=build /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu +ENV LD_LIBRARY_PATH=/usr/local/lib + EXPOSE 8001 CMD ["datasette"] diff --git a/datasette/app.py b/datasette/app.py index f6abe358..beefa108 100644 --- a/datasette/app.py +++ b/datasette/app.py @@ -256,7 +256,7 @@ class Datasette: for fts in ("FTS5", "FTS4", "FTS3"): try: conn.execute( - "CREATE VIRTUAL TABLE v{fts} USING {fts} (t TEXT)".format(fts=fts) + "CREATE VIRTUAL TABLE v{fts} USING {fts} (data)".format(fts=fts) ) fts_versions.append(fts) except sqlite3.OperationalError: