Skip to content

Commit

Permalink
Merge c4c450f into 1f88052
Browse files Browse the repository at this point in the history
  • Loading branch information
fazlerabbi37 committed Jul 21, 2019
2 parents 1f88052 + c4c450f commit 5e49232
Show file tree
Hide file tree
Showing 6 changed files with 158 additions and 0 deletions.
7 changes: 7 additions & 0 deletions db/docker_postgres.sh
@@ -0,0 +1,7 @@
#!/bin/bash
set -e
psql -v ON_ERROR_STOP=1 -U "$POSTGRES_USER" -c "CREATE EXTENSION btree_gist" openstreetmap
make -C db/functions libpgosm.so
psql -v ON_ERROR_STOP=1 -U "$POSTGRES_USER" -c "CREATE FUNCTION maptile_for_point(int8, int8, int4) RETURNS int4 AS '/db/functions/libpgosm', 'maptile_for_point' LANGUAGE C STRICT" openstreetmap
psql -v ON_ERROR_STOP=1 -U "$POSTGRES_USER" -c "CREATE FUNCTION tile_for_point(int4, int4) RETURNS int8 AS '/db/functions/libpgosm', 'tile_for_point' LANGUAGE C STRICT" openstreetmap
psql -v ON_ERROR_STOP=1 -U "$POSTGRES_USER" -c "CREATE FUNCTION xid_to_int4(xid) RETURNS int4 AS '/db/functions/libpgosm', 'xid_to_int4' LANGUAGE C STRICT" openstreetmap
5 changes: 5 additions & 0 deletions docker/.dockerignore
@@ -0,0 +1,5 @@
*
!Gemfile
!Gemfile.lock
!db/functions
!db/docker_postgres.sh
83 changes: 83 additions & 0 deletions docker/DOCKER.md
@@ -0,0 +1,83 @@
# Using Docker to run OpenStreetMap

Using [Docker](https://www.docker.com/) will allow you to install the OpenStreetMap application and all its' dependencies in a container, almost with a single command.

These instructions gloss over the precise details of the dependencies and their configuration but these can be found in full detail at [INSTALL.md](INSTALL.md).

The first step is to fork/clone the repo to your local machine. The repository is reasonably large (~150MB) and it's unlikely that you need the full history. If you are happy to wait for it all to download, run:
```
git clone https://github.com/openstreetmap/openstreetmap-website.git
```

To clone only the most recent version (~23MB), instead use a 'shallow clone':

```
git clone --depth=1 https://github.com/openstreetmap/openstreetmap-website.git
```

Now change working directory to the `openstreetmap-website`:

```
cd openstreetmap-website
```

### App configuration

```
cp config/settings.yml config/settings.local.yml
```

### Database

```
cp config/example.database.yml config/database.yml
```

Set `username` to postgres and `host` to db leave the `password` blank

### Installation

In the root directory run:

```
docker-compose -f docker/docker-compose.yml up
```
Now if this is your first time running or you have removed cache this will take some time to complete. So grab tea/coffee and seat tight. Upon successfull build it should show

### Migrations
While `docker-compose up` is running, open another terminal windows and run:

```
docker-compose -f docker/docker-compose.yml exec web bundle exec rake db:migrate
```

### Node.js modules
We use Yarn to manage the Node.js modules required for the project.:

```
docker-compose -f docker/docker-compose.yml exec web bundle exec rake yarn:install
```

Once these are complete you should be able to visit the app at http://localhost:3000

If localhost does not work, you can use the IP address of the docker-machine.

### Tests

```
docker-compose -f docker/docker-compose.yml exec web bundle exec rake test:db
```

### Bash

If you want to get onto the web container and run specific commands you can fire up bash via:

```
docker-compose -f docker/docker-compose.yml exec web /bin/bash
```

Similarly, if you want to get onto the db container use:

```
docker-compose -f docker/docker-compose.yml exec db /bin/bash
```
30 changes: 30 additions & 0 deletions docker/Dockerfile
@@ -0,0 +1,30 @@
FROM ruby:2.5-slim

# install packages
# fixes dpkg man page softlink error while installing postgresql-client [source: https://stackoverflow.com/a/52655008/5350059]
RUN mkdir -p /usr/share/man/man1 && mkdir -p /usr/share/man/man7
RUN apt-get update && apt-get install curl -y
RUN apt-get clean && rm -rf /var/lib/apt/lists/*


#npm is not available in Debian repo so following official instruction [source: https://github.com/nodesource/distributions/blob/master/README.md#debinstall]
RUN curl -sL https://deb.nodesource.com/setup_10.x -o nodesource_setup.sh && bash nodesource_setup.sh && rm nodesource_setup.sh
RUN apt-get install -y --no-install-recommends ruby-dev libarchive-dev libmagickwand-dev libxml2-dev libxslt1-dev build-essential libpq-dev libsasl2-dev imagemagick libffi-dev locales postgresql-client nodejs
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
RUN npm install yarn phantomjs-prebuilt -g --unsafe-perm


# Setup app location
RUN mkdir -p /app
WORKDIR /app

# Install gems
ADD Gemfile* /app/
RUN bundle install
# Setup local
RUN sed -i -e 's/# en_GB.UTF-8 UTF-8/en_GB.UTF-8 UTF-8/' /etc/locale.gen && \
echo 'LANG="en_GB.UTF-8"'>/etc/default/locale && \
dpkg-reconfigure --frontend=noninteractive locales && \
update-locale LANG=en_GB.UTF-8

ENV LANG en_GB.UTF-8
8 changes: 8 additions & 0 deletions docker/Dockerfile.postgres
@@ -0,0 +1,8 @@
FROM postgres:11

ADD db/docker_postgres.sh docker-entrypoint-initdb.d/docker_postgres.sh
ADD db/functions/ db/functions/

RUN apt-get update
RUN apt-get install -y make build-essential postgresql-server-dev-all
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
25 changes: 25 additions & 0 deletions docker/docker-compose.yml
@@ -0,0 +1,25 @@
version: '2'
services:
web:
image: openstreetmap-website:v1
build:
context: ..
dockerfile: docker/Dockerfile
volumes:
- ..:/app
ports:
- "3000:3000"
command: bundle exec rails s -p 3000 -b '0.0.0.0'
depends_on:
- db
environment:
DATABASE_URL: postgres://postgres@db:5432
db:
image: openstreetmap-db:v1
build:
context: ..
dockerfile: docker/Dockerfile.postgres
ports:
- "5432:5432"
environment:
POSTGRES_DB: openstreetmap

0 comments on commit 5e49232

Please sign in to comment.