This project helps to build CubicWeb based applications as Docker images. Builds include various versions of cubicweb and python and are using Debian base images.
Images available:
latest,1.0,The image include required packages to build a cubicweb application image suitable for production. It's designed to be used as a parent image for your application Dockerfile.
The image contains:
The entrypoint can also be used to run various command like database
creation with db-create or to run arbitrary commands.
The image has some expectations:
CUBE environment variable.CW_INSTANCE. Although you shouldn't need to modify this.There are multiple ways to use theses images corresponding to different levels of integration.
Here are some hints to make the best choice:
For example, given you're in the source tree of cubicweb-blog:
FROM logilab/cubicweb-base
USER root
COPY . /src
RUN pip install -e /src
USER cubicweb
RUN docker-cubicweb-helper create-instance
In case of out-of-source tree or not installing from /src directory, you
will also have to set the CUBE environment variable:
FROM logilab/cubicweb-base
USER root
RUN pip install cubicweb-blog
USER cubicweb
ENV CUBE=blog
RUN docker-cubicweb-helper create-instance
Environment variables control settings from all-in-one.conf, most
important are:
CW_BASE_URL (default http://localhost:8080) should be set to the
final url the instance will be accessed with. Including the scheme,
for example: https://myapp.demo.logilab.orgCW_DB_DRIVER (default postgres), CW_DB_NAME, CW_DB_USER and
CW_DB_PASSWORD control database settingsCW_LOGIN and CW_PASSWORD control the admin login and password,
default to admin:adminThis can be used to validate your image actually works:
docker run --rm -it -e CW_DB_NAME=db.sqlite myimage sh -c "cubicweb-ctl db-create -a instance && uwsgi --ini /etc/uwsgi/uwsgi.ini"
Then go to http://localhost:8080 to access your instance.
To create the initial database you will have to run db-create first:
For example:
# Create the database on local postgresql cluster in a database named "myapp"
docker run --rm -it -e CW_DB_NAME=myapp CW_DB_USER=me -v /var/run/postgresql:/var/run/postgresql myimage db-create
# Create the database on remote postgresql server in a database named "myapp"
docker run --rm -it -e CW_DB_NAME=myapp CW_DB_USER=me CW_DB_PASSWORD=secret CW_DB_HOST=dbserver myimage db-create
# Create the database in a local /tmp/db.sqlite file
docker run --rm -it -e CW_DB_NAME=/tmp/db.sqlite -v /tmp/db.sqlite:/tmp/db.sqlite myimage db-create
To start uwsgi server on local port 8080:
# run foreground
docker run --rm -it -p 8080:8080 myapp
# run in background
docker run -d --restart=always --name myapp myapp
To run cubicweb looping tasks, you will also have to start the
scheduler:
# run foreground
docker run --rm -it myapp cubicweb-ctl scheduler instance
# run in background
docker run -d --restart=always --name myapp-scheduler myapp cubicweb-ctl scheduler instance
In case of source tree builds, add a .dockerignore to your project to
avoid copying useless files inside the docker image. For example:
.*
*.egg-info
**/__pycache__
Dockerfile
Jenkinsfile
Makefile
tox.ini
test
debian
Always pull the base image before running the build. Base images are rebuild in case of debian security update or new pypi releases.
Content type
Image
Digest
sha256:486b7fd6c…
Size
98.1 MB
Last updated
almost 3 years ago
docker pull logilab/cubicweb-base