mirror of
https://github.com/dredx/prole.git
synced 2026-09-24 19:14:33 +00:00
- Introduce lib/shell helpers and keep etc/* scripts thin via compatibility shims - Move Kerberos validation to scripts/validation/check_kerberos.sh and update callers - Add deterministic shellspec unit tests under tests/shellspec/ and wire Maven to run them - Add minimal Spring Boot authority module with startup + /health endpoint and Maven wiring - Document the new layout in docs/layout.md Co-authored-by: Junie <junie@jetbrains.com>
151 lines
5.3 KiB
Markdown
151 lines
5.3 KiB
Markdown
# How to use ShellSpec with Docker
|
|
|
|
- [Official docker images](#official-docker-images)
|
|
- [Using ShellSpec docker image](#using-shellspec-docker-image)
|
|
- [1. Run ShellSpec and your specfiles within container](#1-run-shellspec-and-your-specfiles-within-container)
|
|
- [2. Run simple with helper script and extra hooks](#2-run-simple-with-helper-script-and-extra-hooks)
|
|
- [Hooks](#hooks)
|
|
- [.shellspec-docker/initrc](#shellspec-dockerinitrc)
|
|
- [.shellspec-docker/pre-test](#shellspec-dockerpre-test)
|
|
- [.shellspec-docker/post-test](#shellspec-dockerpost-test)
|
|
- [3. Using ShellSpec image as parent image](#3-using-shellspec-image-as-parent-image)
|
|
- [4. Include ShellSpec into another image](#4-include-shellspec-into-another-image)
|
|
- [Appendix](#appendix)
|
|
- [How to build official ShellSpec docker image yourself](#how-to-build-official-shellspec-docker-image-yourself)
|
|
|
|
## Official docker images
|
|
|
|
There are official images on the [Docker Hub](https://hub.docker.com/r/shellspec/shellspec).
|
|
|
|
| Name | Linux | Included | Size |
|
|
| ------------------------------- | ------ | ------------------------- | -------------------------------------------------------------------------------------------------------------: |
|
|
| shellspec/shellspec | Alpine | busybox (ash) |  |
|
|
| shellspec/shellspec:kcov | Alpine | busybox (ash), bash, kcov |  |
|
|
| shellspec/shellspec-debian | Debian | dash, bash |  |
|
|
| shellspec/shellspec-debian:kcov | Debian | dash, bash, kcov |  |
|
|
| shellspec/shellspec-scratch | None | none (shellspec only) |  |
|
|
|
|
- Version specified images are also available (VERSION: 0.21.0 and above)
|
|
- `shellspec/shellspec[-VARIANT]:<VERSION | master>[-kcov]`
|
|
|
|
## Using ShellSpec docker image
|
|
|
|
### 1. Run ShellSpec and your specfiles within container
|
|
|
|
```sh
|
|
# Run docker command on the project root
|
|
$ docker run -it --rm -v "$PWD:/src" shellspec/shellspec
|
|
|
|
# Display help
|
|
$ docker run -it --rm -v "$PWD:/src" shellspec/shellspec --help
|
|
|
|
# Run with kcov (requires kcov supported image)
|
|
$ docker run -it --rm -u $(id -u):$(id -g) \
|
|
-v "$PWD:/src" shellspec/shellspec:kcov --kcov
|
|
|
|
# For users using Docker Desktop for Windows within WSL 1
|
|
$ docker run -it --rm -v "$(wslpath -wa .):/src" shellspec/shellspec
|
|
```
|
|
|
|
### 2. Run simple with helper script and extra hooks
|
|
|
|
Use [contrib/shellspec-docker](../contrib/shellspec-docker) helper script.
|
|
|
|
```sh
|
|
# Specify the Docker image to use (default: shellspec/shellspec)
|
|
$ export SHELLSPEC_DOCKER=shellspec/shellspec
|
|
|
|
# Run helper script on the project root
|
|
$ shellspec-docker
|
|
|
|
# Display help
|
|
$ shellspec-docker --help
|
|
|
|
# Run with kcov (requires kcov supported image)
|
|
$ shellspec-docker --kcov
|
|
|
|
# Enter the Docker container
|
|
$ shellspec-docker -
|
|
|
|
# Execute command with in the Docker container
|
|
$ shellspec-docker - hostname
|
|
```
|
|
|
|
If you want to run manually.
|
|
|
|
```sh
|
|
$ docker run -it --rm --entrypoint=/shellspec-docker \
|
|
-u $(id -u):$(id -g) -v "$PWD:/src" shellspec/shellspec
|
|
|
|
# For users using Docker Desktop for Windows within WSL 1
|
|
$ docker run -it --rm --entrypoint=/shellspec-docker \
|
|
-u $(id -u):$(id -g) -v "$(wslpath -wa .):/src" shellspec/shellspec
|
|
```
|
|
|
|
#### Hooks
|
|
|
|
##### .shellspec-docker/initrc
|
|
|
|
This file should be a shell script. You can override [docker_run()](../contrib/shellspec-docker) to
|
|
changes options, pass environment variables, etc.
|
|
|
|
##### .shellspec-docker/pre-test
|
|
|
|
Invoked before execute shellspec inside of the docker container.
|
|
|
|
##### .shellspec-docker/post-test
|
|
|
|
Invoked after executed shellspec inside of the docker container.
|
|
|
|
### 3. Using ShellSpec image as parent image
|
|
|
|
Example
|
|
|
|
```Dockerfile
|
|
# Dockerfile
|
|
FROM shellspec/shellspec
|
|
RUN apk add --no-cache add-your-required-packages
|
|
COPY ./ /src
|
|
```
|
|
|
|
```sh
|
|
# Build and run at your project root
|
|
$ docker build -t your-project-name .
|
|
$ docker run -it your-project-name
|
|
```
|
|
|
|
### 4. Include ShellSpec into another image
|
|
|
|
Example
|
|
|
|
```Dockerfile
|
|
# Dockerfile
|
|
FROM buildpack-deps
|
|
RUN apt-get update && apt-get install -y add-your-required-packages
|
|
COPY --from=shellspec/shellspec-scratch /opt/shellspec /opt/shellspec
|
|
ENV PATH /opt/shellspec/:$PATH
|
|
WORKDIR /src
|
|
ENTRYPOINT [ "shellspec" ]
|
|
COPY ./ /src
|
|
```
|
|
|
|
```sh
|
|
# Build and run at your project root
|
|
$ docker build -t your-project-name .
|
|
$ docker run -it your-project-name
|
|
```
|
|
|
|
## Appendix
|
|
|
|
### How to build official ShellSpec docker image yourself
|
|
|
|
Example
|
|
|
|
```sh
|
|
contrib/build.sh .dockerhub/Dockerfile shellspec
|
|
contrib/build.sh .dockerhub/Dockerfile shellspec kcov
|
|
contrib/build.sh .dockerhub/Dockerfile.debian shellspec-debian
|
|
contrib/build.sh .dockerhub/Dockerfile.debian shellspec-debian kcov
|
|
contrib/build.sh .dockerhub/Dockerfile.scratch shellspec-scratch
|
|
```
|