diff --git a/Dockerfile b/Dockerfile index 1f316b1384df49d46b9e9e1139efd0861a43aa44..3055c7e51436ce333a6353f62c4c87366a7d3791 100644 --- a/Dockerfile +++ b/Dockerfile @@ -36,6 +36,7 @@ COPY \ RUN groupadd --gid $GID $GROUPNAME && \ useradd --uid $UID --gid $GID $USERNAME && \ + yum update -y && \ yum install -y libicu curl && \ yum clean all && \ rm -rf /var/cache/dnf && \ diff --git a/README.md b/README.md index 766e649de0e51e537c6d8eff8f6b051b4031ebf7..3e9a3d970f6ee90e29c59c43edb7f52097b8c252 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,10 @@ The Project Blue application is developed by Beast Code to support the qualification and maintenance performance and logistical pipelines of military personnel, in accordance with DOD's requirements. Project Blue currently supports Columbia, Ohio and Virginia class submarines. -The core functionalities of Project Blue are collaboration, planning, and +The core functionalities of Project Blue are collaboration, planning, and maintenance optimization tools for submarine refit periods along with Master Job File (MJF) creation and retrieval aids intended for use by -Trident Refit Facilities. +Trident Refit Facilities. All features of Project Blue are backed by Beast Core digital twins. Each twin is comprised of a 3D representation of the platform's systems (e.g., fuel, @@ -25,7 +25,7 @@ Project Blue is web-based technology that can be deployed to an existing server infrastructure and run on PCs, laptops and other assets connected to the network. The software can also operate on a tablet or mobile device (disconnected from the network) allowing users to utilize the digital twin -anytime, anywhere. Additionally, Project Blue utilizes the keyboard and mouse +anytime, anywhere. Additionally, Project Blue utilizes the keyboard and mouse for an intuitive user experience. Project Blue licensing and pricing is flexible and supports various organizational requirements from a single user up to large scale enterprise @@ -38,7 +38,6 @@ Email: info@Beast-Code.com Phone: (850) 702-3600 Website: https://www.beast-code.com/ - ## Container requirements **Software requirements**: Google Chrome web browser (client) @@ -46,19 +45,45 @@ Website: https://www.beast-code.com/ **Memory requirements**: The minimum memory requirement is 2GBs RAM. Recommended: 8-16GB RAM **CPU requirements**: + - Client: Recommended minimum 2.4GHz Intel Core i5-6300U or equivalent - Server: 0.5 core request, 2.0 core limit in kubernetes cluster recommended **Storage requirements**: + - Application: none - Digital twin: 10-50GB depending on digital twin **NOTE**: The Project Blue image does NOT come bundled with a digital twin and will not be fully functional as a standalone application. - ## Container configuration - `PORT` - - Port which will serve http traffic (default: `5000`) + - Port which will serve http traffic (default: `5000`) + - `WORKSPACE_PATH` - - Path where digital twins are mounted (default: `/project-blue/workspaces`) + - Path where digital twins are mounted (default: `/project-blue/workspaces`) + +## How to run this container + +Once Docker is running use this command +`docker run registry1.dso.mil/ironbank/beast-code/project-blue/base-image` + +Currently the only platform data that is compatible with this container by default is the uss-never-sleeps and it must be mounted at +`/project-blue/workspaces/uss-never-sleeps` inside the container at runtime. + +In order to use other platform data (also known as workspaces) with Project Blue +the `Workspace.DefaultWorkspace` field in `/project-blue/appsettings.Production.json` must be changed to match the folder name containing the platform data. + +## Troubleshooting tips + +If you are having trouble starting the container you can debug into it by altering the entrypoint like this. + +`docker run -it --rm --name debug-project-blue --entrypoint=sh registry1.dso.mil/ironbank/beast-code/project-blue/base-image` + +The server can be launched from the account `benjo` in the default working directory `/project-blue` using the executable `/project-blue/ProjectBlueServer` + +If the executeable fails to launch, try running `ldd /project-blue/ProjectBlueServer` and verify that all of the necessary runtime dynamically linked libraries (DLLs) are present in the image. + +We use `/usr/local/bin/dumb-init` as the default entrypoint in order to forward normal signals to and from the ProjectBlueServer executeable such as SIGTERM and SIGINT. +See https://github.com/Yelp/dumb-init for more information. diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000000000000000000000000000000000000..9d95957950d7e8476ee412240ed0e04406dd7778 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,13 @@ +version: '3' + +services: + project-blue: + image: registry1.dso.mil/ironbank/beast-code/project-blue/base-image:0.1.0 + volumes: + - ./platforms:/project-blue/workspaces/ + ports: + - "8100:5000" + restart: unless-stopped + environment: + ASPNETCORE_ENVIRONMENT: Production + ASPNETCORE_URLS: http://+:5000 diff --git a/hardening_manifest.yaml b/hardening_manifest.yaml index 80ebcaf5ccfe5b2ae3e5f38088001ccde5681178..3b0100ff444bbc3d55db48d617994362366a3a24 100644 --- a/hardening_manifest.yaml +++ b/hardening_manifest.yaml @@ -8,7 +8,7 @@ name: "beast-code/project-blue/base-image" # The most specific version should be the first tag and will be shown # on ironbank.dsop.io tags: - - "0.1.0" + - "0.2.0" - "latest" # Build args passed to Dockerfile ARGs @@ -27,7 +27,7 @@ labels: org.opencontainers.image.url: "https://beast-code.com/" ## Name of the distributing entity, organization or individual org.opencontainers.image.vendor: "Beast Code, LLC" - org.opencontainers.image.version: "0.1.0" + org.opencontainers.image.version: "0.2.0" ## Keywords to help with search (ex. "cicd,gitops,golang") mil.dso.ironbank.image.keywords: "digital twin, 3D, Refit Support, Master Job File" ## This value can be "opensource" or "commercial" @@ -41,15 +41,15 @@ resources: id: beast region: us-east-2 filename: project-blue.tar.gz - url: s3://beast-code.project-blue/project-blue.tar.gz + url: s3://beast-code.project-blue/cff7c4cf03a95530b62ef0e7928e431fae9f5a23/project-blue.tar.gz validation: type: sha256 - value: 4dbebbba662a4452332d4b7d1368965267cc4374e6284e95bc295cbe09051a95 + value: 9a826fedce11b3ce2a6a9318ed24ef9ef4b2e2e9990486144d3fba16e9b2fd99 - auth: id: beast region: us-east-2 filename: dumb-init - url: s3://beast-code.core/dumb-init + url: s3://beast-code.project-blue/dumb-init validation: type: sha256 value: 37f2c1f0372a45554f1b89924fbb134fc24c3756efaedf11e07f599494e0eff9