|
|
|
# chicken-scheme dockerfiles
|
|
|
|
|
|
|
|
Dockerfiles useful for [chicken scheme](https://www.call-cc.org/)
|
|
|
|
development. An optional custom `chicken-assemble` script is also
|
|
|
|
provided, used to build projects in an opinionated, structured way.
|
|
|
|
|
|
|
|
You may pick a flavour built on top of popular linux distros:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
docker pull plotter/chicken-scheme:5.2.0-alpine
|
|
|
|
docker pull plotter/chicken-scheme:5.2.0-debian
|
|
|
|
docker pull plotter/chicken-scheme:5.2.0-ubuntu
|
|
|
|
docker pull plotter/chicken-scheme:5.2.0-centos
|
|
|
|
```
|
|
|
|
|
|
|
|
## How to use these images
|
|
|
|
|
|
|
|
Mount your source code directory into a running container to access
|
|
|
|
chicken's REPL and/or compiler:
|
|
|
|
|
|
|
|
```bash
|
|
|
|
docker run --rm -it --workdir /src -v $(pwd):/src plotter/chicken-scheme
|
|
|
|
```
|
|
|
|
|
|
|
|
For truly static builds, prefer the `alpine` base image and set the
|
|
|
|
proper compiler and linker flags:
|
|
|
|
|
|
|
|
```dockerfile
|
|
|
|
FROM plotter/chicken-scheme:5.2.0-alpine
|
|
|
|
WORKDIR /src
|
|
|
|
COPY . .
|
|
|
|
RUN csc ... TODO write proper compilation instruction
|
|
|
|
ENTRYPOINT ["/src/main"]
|
|
|
|
```
|
|
|
|
|
|
|
|
You may also choose to build a barebones `scratch` image containing
|
|
|
|
only the desired binary:
|
|
|
|
|
|
|
|
```dockerfile
|
|
|
|
FROM plotter/chicken-scheme:5.2.0-alpine as build
|
|
|
|
WORKDIR /src
|
|
|
|
COPY . .
|
|
|
|
RUN csc ... TODO write proper compilation instruction
|
|
|
|
|
|
|
|
FROM scratch
|
|
|
|
COPY --from=build /src/app /bin/app
|
|
|
|
ENTRYPOINT ["/bin/app"]
|
|
|
|
```
|
|
|
|
|
|
|
|
## `chicken-assemble`-based projects
|
|
|
|
|
|
|
|
TODO explain chicken-assemble and the enforced project structure
|