feat(Dockerfile): build docker image to run laminar

pull/102/head
Devon Bagley 5 years ago
parent 2ee950d1c3
commit ef8c246a15

@ -43,6 +43,44 @@ Both install packages will create a new `laminar` user and install (but not acti
See the [development README](https://github.com/ohwgiles/laminar) for instructions for installing from source.
## Building for Docker
You can build an image that runs `laminard` by default, and contains `laminarc` for use based on `alpine:edge` using the `Dockerfile` in the `docker/` directory.
Keep in mind that this is meant to be used as a base image to build from, so it contains only the minimum packages required to run laminar. The only shell available by default is sh and it does not even have ssh or git. You can use this image to run a basic build server, but it is recomended that you build a custom image from this base to better suit your needs.
```bash
# from the repository root:
docker build [-t image:tag] -f docker/Dockerfile .
```
You can also build a docker image using a bash script provided in the root of the repository. You should already have docker installed on your machine for this to work.
```bash
# from the repository root:
./docker-build.sh [(OPTIONAL) tag {default:latest}]
```
This will build an image from from the Dockerfile in `docker/` tagged as `laminar:${tag}`.
### laminard
The container will execute `laminard` by default. To start a laminar server with docker you can simply run the image as a daemon.
```bash
docker run -d --name laminar_server -p 8080:8080 [-v laminardir|laminar.conf] laminar:latest
```
You can customize laminar and persist your data by mounting your laminar directory to `/var/lib/laminar` and/or mounting a custom configuration file to `/etc/laminar.conf`. The uid:gid ownership for the files mounted to `/var/lib/laminar` should be `100:100`.
### laminarc
You can execute `laminarc` either standalone, by running the image, or by executing `laminarc` on a running instance of the image.
```bash
docker exec -it laminar_server laminarc queue example_task
```
---
# Service configuration

@ -0,0 +1,5 @@
#!/bin/bash -e
$PROJECT_DIR=`dirname ${BASH_SOURCE[0]}`
docker build -t laminar${1:-latest} -f $PROJECT_DIR/docker/Dockerfile $PROJECT_DIR

@ -0,0 +1,47 @@
FROM alpine:edge
EXPOSE 8080
LABEL org.label-schema.name="laminar" \
org.label-schema.description="Fast and lightweight Continuous Integration" \
org.label-schema.usage="/usr/doc/UserManual.md" \
org.label-schema.url="https://laminar.ohwg.net" \
org.label-schema.vcs-url="https://github.com/ohwgiles/laminar" \
org.label-schema.schema-version="1.0" \
org.label-schema.docker.cmd="docker run -d -p 8080:8080 laminar"
RUN apk add --no-cache -X http://dl-3.alpinelinux.org/alpine/edge/testing/ \
sqlite-dev \
zlib \
capnproto \
tini
ADD UserManual.md /usr/doc/
ADD . /build/laminar
RUN apk add --no-cache --virtual .build -X http://dl-3.alpinelinux.org/alpine/edge/testing/ \
build-base \
cmake \
capnproto-dev \
boost-dev \
zlib-dev \
rapidjson-dev && \
cd /build/laminar && \
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/ && \
make -j4 && \
make install && \
apk del .build && \
rm -rf /build
RUN adduser -SDh /var/lib/laminar -g 'Laminar' -G users laminar
WORKDIR /var/lib/laminar
RUN mkdir .ssh && \
chown -R laminar:users .
USER laminar
ENTRYPOINT [ "/sbin/tini", "--" ]
CMD [ "laminard" ]
Loading…
Cancel
Save