Skip to content

Commit

Permalink
Enable the app to be built using Docker
Browse files Browse the repository at this point in the history
  • Loading branch information
paulsturgess authored and Paul Sturgess committed Sep 16, 2016
1 parent 5f4dcd3 commit 4407104
Show file tree
Hide file tree
Showing 7 changed files with 117 additions and 1 deletion.
6 changes: 6 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
*
!Gemfile
!Gemfile.lock
!docker_postgres.sh
!db/functions
!lib/quad_tile
41 changes: 41 additions & 0 deletions DOCKER.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Using Docker to run OpenStreetMap

Using [Docker](https://www.docker.com/) will allow you to install the OpenStreetMap application and all it's dependencies in a container.

### Clone the repo

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

### App configuration

```
cp config/example.application.yml config/application.yml
```

### Database

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

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

### Installation

```
docker-compose up
```

### Migrations

```
docker-compose exec web bundle exec rake db:migrate
```

### Tests

```
docker-compose exec web bundle exec rake test:db
```
29 changes: 29 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
FROM ruby:2.3-slim
MAINTAINER OpenStreetMap
ENV REFRESHED_AT 2016-09-15

# Install packages
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
ruby-dev \
libgdbm-dev \
libncurses5-dev \
libffi-dev \
libyaml-dev \
libreadline-dev \
libpq-dev \
libxml2-dev \
imagemagick \
libmagickwand-dev \
postgresql-client \
nodejs \
file

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

# Install gems
ADD Gemfile /app/Gemfile
ADD Gemfile.lock /app/Gemfile.lock
RUN bundle install
9 changes: 9 additions & 0 deletions Dockerfile.postgres
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
FROM postgres:9.4

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

RUN apt-get update && apt-get install -y make \
postgresql-server-dev-all \
build-essential
4 changes: 3 additions & 1 deletion INSTALL.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
These instructions are designed for setting up The Rails Port for development and testing.
If you want to deploy the software for your own project, then see the notes at the end.

You can install the software directly on your machine, which is the traditional and probably best-supported approach. However, there is an alternative which may be easier: Vagrant. This installs the software into a virtual machine, which makes it easier to get a consistent development environment and may avoid installation difficulties. For Vagrant instructions, see [VAGRANT.md](VAGRANT.md).
You can install the software directly on your machine following the instructions below, which is the traditional and probably best-supported approach.

Alternatively there are guides to use either [Vagrant](VAGRANT.md) or [Docker](DOCKER.md).

These instructions are based on Ubuntu 12.04 LTS, which is the platform used by the OSMF servers.
The instructions also work, with only minor amendments, for all other current Ubuntu releases, Fedora and MacOSX
Expand Down
22 changes: 22 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
version: '2'
services:
web:
image: openstreetmap-website:v1
build:
context: .
dockerfile: Dockerfile
volumes:
- .:/app
ports:
- "3000:3000"
command: ./script/rails s -p 3000 -b '0.0.0.0'
depends_on:
- db
db:
build:
context: .
dockerfile: Dockerfile.postgres
ports:
- "5432:5432"
environment:
POSTGRES_DB: openstreetmap
7 changes: 7 additions & 0 deletions docker_postgres.sh
Original file line number Diff line number Diff line change
@@ -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 '${PWD}/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 '${PWD}/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 '${PWD}/db/functions/libpgosm', 'xid_to_int4' LANGUAGE C STRICT" openstreetmap

0 comments on commit 4407104

Please sign in to comment.