.. | ||
DNS | ||
WebServer | ||
create_compiler.sh | ||
Dockerfile | ||
README.md |
Container Code
This folder contains the container version of the unikernel services.
Each folder holds:
- The CPP file containing the code
- A compile.sh script to compile the CPP file into a runnable service
- A Dockerfile to create the container for this service
- A create_container.sh script to create to container from the Dockerfile
- A run_service.sh script to run the created container in detached mode
- A start.sh script that will compile the binary from code, build the Docker container and run it (in detached mode)
The following section briefly explains the steps taken.
Pre Requisite
Before running the compile.sh or start.sh scripts, you must first build the builder container from the Dockerfile in this parent folder.
This can be done by running the create_compiler.sh script or running the following command from the CONTAINER directory:
docker build -t cetic/compiler .
Compiling the binary (compile.sh)
Requires the cetic/compiler container image
This script will launch a new cetic/compiler image container, mapping the current folder to a folder inside the container, then it will staticaly compile the C++ code in the .cpp file in the directory and output a runnableService binary.
Creating the container
This will create the service container using the Dockerfile.
It will use the lastest version of alpine base image and copy the runnableService executable inside the container.
Running the container
When running the container, it will execute the command instructed in the Dockerfile.
The container will wait for the network to be up (sleep 1) then it will launch the service binary, passing the container's IP address to bind the service to as a paramater.
The script starts it in detached mode (i.e.: in the background)
NB: as of now, the IP address is not given statically, you must run docker network inspect bridge
to view the IP address assigned to the container.