mirror of
https://github.com/ohwgiles/laminar.git
synced 2025-06-13 12:54:29 +00:00
feat(Dockerfile): build docker image to run laminar
This commit is contained in:
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.
|
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
|
# Service configuration
|
||||||
|
5
docker-build.sh
Executable file
5
docker-build.sh
Executable file
@ -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
|
47
docker/Dockerfile
Normal file
47
docker/Dockerfile
Normal file
@ -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…
Reference in New Issue
Block a user