Table of Contents
-
Install redis
$ sudo dnf -y install git redis python2-virtualenv python-pip python-devel
-
Start redis server
$ sudo systemctl start redis
-
Clone this repository
$ git clone https://github.com/container-workbook/docker-workshop/
$ cd docker-workshop/pyconapp/
-
Create a python virtualenv
$ virtualenv venv
$ . venv/bin/activate
(venv) $
-
Install all the requirements
(venv) $ pip install -r requirements.txt
-
Start flask app
(venv) $ export REDIS_HOST=127.0.0.1
(venv) $ python app.py
-
Create
Dockerfile
that looks like this:
$ cat Dockerfile
FROM fedora:24
RUN dnf update -y && \
dnf install -y python-pip python-devel
ADD https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh /usr/local/bin/wait-for-it.sh
RUN chmod +x /usr/local/bin/wait-for-it.sh && mkdir -p /app
WORKDIR /app
COPY . /app
RUN pip install -r requirements.txt
EXPOSE 5000
ENTRYPOINT /app/entrypoint.sh
-
Create an
entrypoint.sh
file which looks like this:
$ cat entrypoint.sh
#!/bin/bash
/usr/local/bin/wait-for-it.sh REDIS_HOST:6379
cd /app
python app.py
-
Add permissions to
entrypoint.sh
$ chmod +x entrypoint.sh
-
Create a
docker-compose.yml
file that defines multi-container application
$ cat docker-compose.yml
version: '2'
services:
redis:
image: redis:latest
ports:
- "6379"
app:
build: .
ports:
- "5000"
environment:
- REDIS_HOST=redis