Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@biggers
Last active March 8, 2018 11:42
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save biggers/c714033729f7cdf50099 to your computer and use it in GitHub Desktop.
Save biggers/c714033729f7cdf50099 to your computer and use it in GitHub Desktop.
docker-compose build attempt for a Pyramid app
#!/bin/sh
set -e
/bin/rm -f /etc/service/pyramid_app/run
mkdir -p /etc/service/pyramid_app/
if [ "$ENV" = 'PROD' ]
then
## !! this not prepared-for or tested, yet !!
ln -s /etc/sv/pyramid_service /etc/service/pyramid_app/run
echo "running Production UWSGI service..."
# echo "uwsgi --http 0.0.0.0:9090 --wsgi-file /project/app/identidock.py -callable app --stats 0.0.0.0:1080" | tee /etc/sv/pyramid_service
echo "Running Production Server"
else
## do more 'apt-installs' ??
ln -s /etc/sv/pyramid_service_DEV /etc/service/pyramid_app/run
echo "running Pyramid / paste Development service"
fi
/sbin/my_init
---
## utsl/pyramid_blogr Compose
# REFs:
# https://docs.docker.com/compose/reference/
# https://github.com/docker/compose/releases
# REQUIRES: docker-compose 1.6 or newer
version: '2'
services:
blogr:
build: .
ports:
- "1080:1080"
working_dir: /project
volumes:
- ./pyramid_blogr:/project/pyramid_blogr
links:
- db
environment:
- ENV="DEV"
- PYTHONPATH='.'
- DB_PORT="tcp://db:5432"
command:
- /project/cmd.sh
# mkdir -p /var/lib/postgresql/blogr
# chown mbiggers.docker /var/lib/postgresql/blogr
db:
image: postgres:9.3
volumes:
- data:/var/lib/postgresql/blogr
volumes:
data: {}
FROM phusion/baseimage:0.9.18
MAINTAINER biggers@utsl.com
ENV PYTHONUNBUFFERED 1
# ...put your own build instructions here...
RUN apt-get update --no-install-recommends && \
apt-get install -y --no-install-recommends \
build-essential \
python3-dev \
python3.4-venv \
mercurial python-pip
RUN apt-get install -y --no-install-recommends \
postgresql-client \
libpq-dev \
python3-psycopg2 && \
apt-get -y clean
## Development support
COPY run_dev /etc/sv/pyramid_service_DEV
COPY bashrc /root/.bashrc
## Production service -- "deploy" in cmd.sh
## COPY run_prod /etc/sv/pyramid_service
ADD cache-stamp /project/cache-stamp
COPY development.ini \
production.ini \
cmd.sh \
Makefile \
requirements.txt \
/project/
COPY pyramid_blogr /project/
COPY setup.py \
setup.cfg \
/project/pyramid_blogr/
RUN pyvenv-3.4 /project
WORKDIR /project
RUN . /project/bin/activate && \
pip3 install --upgrade pip && \
pip install -r requirements.txt
## Use phusion/baseimage init-system.
# CMD ["cmd.sh"]
# EXPOSE 1080 1443
## GNU Makefile for docker-compose build & run of this Project
# REFs:
# https://docs.docker.com/compose/reference/
# https://github.com/docker/compose/releases
.PHONY: build_image start stop getlogs clean
DCMP = docker-compose
# PROJECT = "--project-name py-pyramid-pgsql"
# --pull downloads a new base-image
PULL = # "--pull"
build_image:
${DCMP} build --force-rm ${PULL}
build_image_bust:
date '+%F:%H.%M.%S' > cache-stamp
${MAKE} build_image
start:
${DCMP} up -d
stop:
${DCMP} stop
# to help debug a failed build. set -o ignoreeof
IMAGE_ID = foo
run_debug:
docker run -i -t ${IMAGE_ID} /bin/bash
run_bash:
docker exec -t -i ${IMAGE_ID} bash -l
getlogs:
${DCMP} logs
real_clean:
echo "exited Dockers: $$(docker ps -aq -f status=exited)"
# docker rm -v $(docker ps -aq -f status=exited)
# '-v' incls Docker volumes
RMFLAGS =
clean:
${DCMP} rm ${IMAGE} ${RMFLAGS}
## on Linux or Mac OS-X
## https://docs.docker.com/machine/install-machine/
machine-install:
curl -L https://github.com/docker/machine/releases/download/v0.6.0/docker-machine-`uname -s`-`uname -m` > /usr/local/bin/docker-machine
chmod +x /usr/local/bin/docker-machine
#!/bin/sh
## COPY to: /etc/sv/pyramid_service
exec 2>&1
cd /project
. bin/activate
pserve --reload development.ini
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment