Hybrid method 3: Custom Docker image

Bundle the nodegen-server and Wasm modules into a new Docker image

Alternatively, you can bundle the nodegen-serverarrow-up-right and Wasm modules into a new Docker image. This approach is useful if you want to create a custom Docker image with your own configuration.

  1. Complete the instructions in Export the Wasm modules from Spark.

  2. Navigate to your desired working directory and move the exported ZIP to this location. In this example the name of the file is runner_example.zip.

  3. Create a Dockerfilearrow-up-right with the following content:

    FROM alpine:latest AS unzipper
    
    # Set extract model name
    ARG MODEL_PATH=./runner_example.zip
    
    # Add unzip package
    RUN apk add unzip
    RUN mkdir /models && mkdir /model_zip
    
    # Copy extracted model model zip to temp folder
    COPY $MODEL_PATH ./model_zip
    
    # Unzip the extracted zip file
    RUN find ./model_zip -depth -name "*.zip" -exec sh -c 'f="{}"; unzip -- "$f" -d ./models' \; && rm -rf ./model_zip;
    
    # Set nodegen-server image
    FROM ghcr.io/coherent-partners/nodegen-server:latest
    
    # Create models folder
    RUN mkdir /models
    
    # Copy unzipped models to previously created folder
    COPY --from=unzipper /models/ /models
    
    # Set MODEL_LOCATION variable to models folder
    ENV MODEL_LOCATION=/models
    
    # Set the hybrid runner mode
    ENV USE_SAAS=false
    
    # Default application will listen on port 3000; you can set different to port by set PORT variable
    ENV PORT=8080
    
    # Start the application by script npm start
    CMD ["npm", "start"]
  4. buildarrow-up-right the Docker image.

    docker build -t nodegen_server_custom .
  5. runarrow-up-right the service and create a container called wasm-server. This example binds 8080 of the container to the port 8080 of the host.

    docker run --name wasm-server -p 8080:8080 nodegen_server_custom
  6. Make API calls to the healthcheck and execute endpoints similar to above to localhost:8080.

Configure HTTPS with nginx

By default nodegen-serverarrow-up-right only supports HTTP. HTTPS support can be configured by including nginx serverarrow-up-right in the Docker image. Read more on how to configure HTTPS servers in the nginx documentationarrow-up-right.

  1. Navigate to your desired working directory and move the exported ZIP to this location. In this example the name of the file is runner_example.zip.

  2. Prepare your ssl certificate in the working directory saved as ssl.

  3. Create your nginx configuration filearrow-up-right in the working directory, saved as nginx.conf. Here is an example that could be used.

  4. Create a Dockerfilearrow-up-right with the following content:

  5. Make API calls to the healthcheck and execute endpoints similar Hybrid method 2: Manual Wasm mount.

Last updated