Introduce docker-compose config for development
This commit is contained in:
parent
e6db73f8d3
commit
c514fd62fe
7 changed files with 115 additions and 0 deletions
1
.dockerignore
Normal file
1
.dockerignore
Normal file
|
@ -0,0 +1 @@
|
||||||
|
docker-db-data
|
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -18,3 +18,6 @@ public/attachments
|
||||||
public/export
|
public/export
|
||||||
storage
|
storage
|
||||||
tmp
|
tmp
|
||||||
|
|
||||||
|
# docker-compose database directory
|
||||||
|
docker-db-data
|
||||||
|
|
52
Dockerfile
Normal file
52
Dockerfile
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
FROM ruby:2.5
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# 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 -f nodesource_setup.sh
|
||||||
|
|
||||||
|
# install packages
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install --no-install-recommends -y \
|
||||||
|
build-essential \
|
||||||
|
curl \
|
||||||
|
imagemagick \
|
||||||
|
libarchive-dev \
|
||||||
|
libffi-dev \
|
||||||
|
libmagickwand-dev \
|
||||||
|
libpq-dev \
|
||||||
|
libsasl2-dev \
|
||||||
|
libxml2-dev \
|
||||||
|
libxslt1-dev \
|
||||||
|
locales \
|
||||||
|
nodejs \
|
||||||
|
osmosis \
|
||||||
|
postgresql-client \
|
||||||
|
ruby-dev && \
|
||||||
|
apt-get clean && \
|
||||||
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# install npm packages
|
||||||
|
RUN npm install -g --unsafe-perm \
|
||||||
|
phantomjs-prebuilt \
|
||||||
|
yarn
|
||||||
|
|
||||||
|
# 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
|
20
config/docker.database.yml
Normal file
20
config/docker.database.yml
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
# This configuration is tailored for use with docker-compose. See DOCKER.md for more information.
|
||||||
|
|
||||||
|
development:
|
||||||
|
adapter: postgresql
|
||||||
|
database: openstreetmap
|
||||||
|
username: openstreetmap
|
||||||
|
password: openstreetmap
|
||||||
|
host: db
|
||||||
|
encoding: utf8
|
||||||
|
|
||||||
|
# Warning: The database defined as 'test' will be erased and
|
||||||
|
# re-generated from your development database when you run 'rake'.
|
||||||
|
# Do not set this db to the same as development or production.
|
||||||
|
test:
|
||||||
|
adapter: postgresql
|
||||||
|
database: osm_test
|
||||||
|
username: postgres
|
||||||
|
password:
|
||||||
|
host: db
|
||||||
|
encoding: utf8
|
24
docker-compose.yml
Normal file
24
docker-compose.yml
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
version: "3"
|
||||||
|
|
||||||
|
services:
|
||||||
|
web:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
volumes:
|
||||||
|
- .:/app
|
||||||
|
ports:
|
||||||
|
- "3000:3000"
|
||||||
|
command: bundle exec rails s -p 3000 -b '0.0.0.0'
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
|
||||||
|
db:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: docker/postgres/Dockerfile
|
||||||
|
ports:
|
||||||
|
- "54321:5432"
|
||||||
|
environment:
|
||||||
|
POSTGRES_DB: openstreetmap
|
||||||
|
volumes:
|
||||||
|
- ./docker-db-data:/var/lib/postgresql/data
|
4
docker/postgres/Dockerfile
Normal file
4
docker/postgres/Dockerfile
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
FROM postgres:11
|
||||||
|
|
||||||
|
# Add db init script to install OSM-specific Postgres functions/extensions.
|
||||||
|
ADD docker/postgres/openstreetmap-postgres-init.sh /docker-entrypoint-initdb.d/
|
11
docker/postgres/openstreetmap-postgres-init.sh
Executable file
11
docker/postgres/openstreetmap-postgres-init.sh
Executable file
|
@ -0,0 +1,11 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
# Create 'openstreetmap' user
|
||||||
|
psql -v ON_ERROR_STOP=1 -U "$POSTGRES_USER" <<-EOSQL
|
||||||
|
CREATE USER openstreetmap PASSWORD 'openstreetmap';
|
||||||
|
GRANT ALL PRIVILEGES ON DATABASE openstreetmap TO openstreetmap;
|
||||||
|
EOSQL
|
||||||
|
|
||||||
|
# Create btree_gist extensions
|
||||||
|
psql -v ON_ERROR_STOP=1 -U "$POSTGRES_USER" -c "CREATE EXTENSION btree_gist" openstreetmap
|
Loading…
Add table
Add a link
Reference in a new issue