Browse Source

Merge pull request #956 from pelias/dockerfile

Update Dockerfile with changes from dockerfile repo and add CircleCI config
pull/960/merge
Julian Simioni 7 years ago committed by GitHub
parent
commit
fe2eb57c64
  1. 12
      .circleci/config.yml
  2. 30
      .circleci/docker.sh
  3. 1
      .dockerignore
  4. 15
      Dockerfile
  5. 18
      pelias.json.docker

12
.circleci/config.yml

@ -0,0 +1,12 @@
version: 2
jobs:
build:
working_directory: /app
docker:
- image: docker:17.05.0-ce-git
steps:
- checkout
- setup_remote_docker
- run:
name: Build and push image to Docker Hub
command: sh .circleci/docker.sh

30
.circleci/docker.sh

@ -0,0 +1,30 @@
#!/bin/bash
set -u
# collect params from ENV vars
DATE=`date +%Y-%m-%d`
DOCKER_REPOSITORY="pelias"
DOCKER_PROJECT="${DOCKER_REPOSITORY}/${CIRCLE_PROJECT_REPONAME}"
# the name of the image that represents the "branch", that is an image that will be updated over time with the git branch
# the production branch is changed to "latest", otherwise the git branch becomes the name of the version
if [[ "${CIRCLE_BRANCH}" == "production" ]]; then
DOCKER_BRANCH_IMAGE_VERSION="latest"
else
DOCKER_BRANCH_IMAGE_VERSION="${CIRCLE_BRANCH}"
fi
DOCKER_BRANCH_IMAGE_NAME="${DOCKER_PROJECT}:${DOCKER_BRANCH_IMAGE_VERSION}"
# the name of the image that represents the "tag", that is an image that is named with the date and git commit and will never be changed
DOCKER_TAG_IMAGE_VERSION="${CIRCLE_BRANCH}-${DATE}-${CIRCLE_SHA1}"
DOCKER_TAG_IMAGE_NAME="${DOCKER_PROJECT}:${DOCKER_TAG_IMAGE_VERSION}"
# build image and login to docker hub
docker build -t $DOCKER_PROJECT .
docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"
# copy the image to each of the two tags, and push
docker tag $DOCKER_PROJECT $DOCKER_BRANCH_IMAGE_NAME
docker tag $DOCKER_PROJECT $DOCKER_TAG_IMAGE_NAME
docker push $DOCKER_BRANCH_IMAGE_NAME
docker push $DOCKER_TAG_IMAGE_NAME

1
.dockerignore

@ -0,0 +1 @@
.git

15
Dockerfile

@ -1,8 +1,10 @@
FROM node:4.6.0 # base image
MAINTAINER Pelias FROM pelias/libpostal_baseimage
# maintainer information
LABEL maintainer="pelias@mapzen.com"
EXPOSE 3100 EXPOSE 3100
LABEL io.openshift.expose-services 3100:http
# Where the app is built and run inside the docker fs # Where the app is built and run inside the docker fs
ENV WORK=/opt/pelias ENV WORK=/opt/pelias
@ -11,18 +13,17 @@ ENV WORK=/opt/pelias
ENV HOME=/opt/pelias ENV HOME=/opt/pelias
WORKDIR ${WORK} WORKDIR ${WORK}
ADD . ${WORK} COPY . ${WORK}
# Build and set permissions for arbitrary non-root user # Build and set permissions for arbitrary non-root user
RUN npm install && \ RUN npm install && \
npm test && \ npm test && \
chmod -R a+rwX . chmod -R a+rwX .
ADD pelias.json.docker pelias.json
# Don't run as root, because there's no reason to (https://docs.docker.com/engine/articles/dockerfile_best-practices/#user). # Don't run as root, because there's no reason to (https://docs.docker.com/engine/articles/dockerfile_best-practices/#user).
# This also reveals permission problems on local Docker. # This also reveals permission problems on local Docker.
RUN chown -R 9999:9999 ${WORK} RUN chown -R 9999:9999 ${WORK}
USER 9999 USER 9999
CMD npm start # start service
CMD [ "npm", "start" ]

18
pelias.json.docker

@ -1,18 +0,0 @@
{
"esclient": {
"hosts": [
{
"env": "production",
"protocol": "http",
"host": "pelias-data-container",
"port": 9200
},
{
"env": "production",
"protocol": "http",
"host": "pelias-data-container",
"port": 9300
}
]
}
}
Loading…
Cancel
Save