-
Notifications
You must be signed in to change notification settings - Fork 114
Add C# plugin specific restrictions to documentation #817
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
mcserep
merged 11 commits into
Ericsson:feature/csharp_plugin
from
LakatosMark1:feature/csharp_plugin
Jan 30, 2026
+53
−4
Merged
Changes from 9 commits
Commits
Show all changes
11 commits
Select commit
Hold shift + click to select a range
632f0a5
Update Dockerfile for postgresql usage
LakatosMark1 ea4ce6c
Update README.md
LakatosMark1 40a16a4
Update README.md
LakatosMark1 d8facfb
Update README.md
LakatosMark1 9c6ecca
Create README-C#
LakatosMark1 7b7730d
Rename README-C# to README-C#.md
LakatosMark1 bf701de
Update Dockerfile
LakatosMark1 25a266f
Update README.md
LakatosMark1 38134cd
Update README-C#.md
LakatosMark1 00e4fc1
Remove redundancy from Docker Guide.
mcserep 8300b71
Add C# specific remarks to the Backend User Guide.
mcserep File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,216 @@ | ||
| # Docker | ||
|
|
||
| [](https://www.docker.com/) | ||
|
|
||
| Docker related scripts and config files are under [CodeCompass/docker](/docker). | ||
| After navigating to this directory you can use the build scripts with the | ||
| commands below. | ||
|
|
||
| :warning: When using Docker to build CodeCompass it is very important to have | ||
| the following filesystem layout: | ||
|
|
||
| ``` | ||
| ... | ||
| `-CodeCompass | ||
| |-CodeCompass # Source code from Git. | ||
| | `-docker # Docker related files. | ||
| | `-dev # Docker files for development. | ||
| | `-web # Docker files for deployment. | ||
| |-build # CMake runs here. | ||
| |-install # CodeCompass goes here. | ||
| `-workspace # Parsed projects' workspace directory. | ||
| ``` | ||
|
|
||
| The scripts assume this layout. The `build` and `install` directories will be | ||
| generated to the parent directory of `CodeCompass` directory containing the | ||
| source code. The `workspace` directory should be created manually. | ||
|
|
||
| Table of Contents | ||
| ================= | ||
| * [Development](#development) | ||
| * [Build image for development](#build-image-for-development) | ||
| * [How to use docker to develop CodeCompass](#how-to-use-docker-to-develop-codecompass) | ||
| * [Build, install and test CodeCompass](#build-install-and-test-codecompass) | ||
| * [Make a Postgresql container](#make-a-postgresql-container) | ||
| * [Create a network and connect CodeCompass and Postgres](#create-a-network-and-connect-codecompass-and-postgres) | ||
| * [Create a Postgres user](#create-a-postgres-user) | ||
| * [How to parse a project](#how-to-parse-a-project) | ||
| * [How to start a webserver](#how-to-start-a-webserver) | ||
| * [Deployment](#deployment) | ||
| * [Build image for runtime](#build-image-for-runtime) | ||
| * [Build image for webserver](#build-image-for-webserver) | ||
| * [How to use the webserver executing container](#how-to-use-the-webserver-executing-container) | ||
| * [Official DockerHub images](#official-dockerhub-images) | ||
|
|
||
| # Development | ||
| ## Build image from development | ||
| Build the development environment image. The tag name is important! | ||
| **It is very important to give this command from the top level directory of the | ||
| CodeCompass source.** | ||
|
|
||
| ``` | ||
| cd CodeCompass | ||
| docker build -t codecompass:dev --file docker/dev/Dockerfile . | ||
| ``` | ||
|
|
||
| See more information [below](#how-to-use-docker-to-develop-codecompass) how to | ||
| use this image to develop CodeCompass. | ||
|
|
||
| ## How to use docker to develop CodeCompass | ||
| You can use the `codecompass:dev` image created | ||
| [above](#build-image-for-development) to develop CodeCompass. | ||
| First, you have to start a docker container from this image, which will mount | ||
| your CodeCompass directory from your host and starts a shell: | ||
| ```bash | ||
| docker run --rm -ti \ | ||
| --env DATABASE=pgsql \ | ||
| --env TEST_DB="postgresql://postgres:password@postgres_container:5432/postgres" \ | ||
| --env BUILD_TYPE=Release \ | ||
| --volume /path/to/host/CodeCompass:/CodeCompass \ | ||
| --volume /path/to/your/host/project:/projects/myproject \ | ||
| -p 8001:8080 \ | ||
| codecompass:dev \ | ||
| /bin/bash | ||
| ``` | ||
| This container will be used in the next subsections to build CodeCompass, | ||
| parse a project and start a webserver. | ||
|
|
||
| *Note*: you do not have to give the `--publish` option and set the `DATABASE` | ||
| environment variable if you do not want to run a webserver. Also you do not | ||
| have to mount a project directory if you do not want to parse it later. | ||
|
|
||
| ### Build, install and test CodeCompass | ||
| You can use the `codecompass-build.sh` script inside the container to build, | ||
| install and test CodeCompass: | ||
| (If you get a timeout error when downloading, put this command before install: NODE_OPTIONS="--max-old-space-size=4096" NEXT_PRIVATE_BUILD_WORKER_TIMEOUT=600) | ||
| ```bash | ||
| # Build CodeCompass. | ||
| codecompass-build.sh -j8 | ||
|
|
||
| # Install CodeCompass. | ||
| codecompass-build.sh install | ||
|
|
||
| # Run tests. | ||
| codecompass-build.sh test | ||
| ``` | ||
|
|
||
| ### Make a Postgresql container | ||
| You need to create a PostgreSQL container that CodeCompass can communicate with. | ||
| (postgres is the image name and :15 is the specific version) | ||
| ```bash | ||
| docker run \ | ||
| --name postgres_container \ | ||
| -e POSTGRES_PASSWORD=root_password \ | ||
| -d \ | ||
| -p 5432:5432 \ | ||
| postgres:15 | ||
| ``` | ||
|
|
||
| ### Create a network and connect CodeCompass and Postgres | ||
| Run the containers and connect them to a nework | ||
| ```bash | ||
| docker network create my_network | ||
| docker network connect my_network postgres_name | ||
| docker network connect my_network codecompass_container | ||
| ``` | ||
| ### Create a Postgres user | ||
| You need to create a Postgres user and give it admin rights. | ||
| (Run these commands from the host computer) | ||
| ```bash | ||
| # Create user "your_user" with password "your_password" and give Superuser rights | ||
| docker exec -it postgres_container psql -U postgres -d postgres -c "CREATE USER your_user WITH PASSWORD 'your_password' SUPERUSER;" | ||
| ``` | ||
|
|
||
| ### How to parse a project | ||
| You can parse a project inside a docker container by using the following | ||
| command: | ||
| (The project must be built before parsing.) | ||
| ```bash | ||
| CodeCompass_parser \ | ||
| -d "pgsql:database=myproject;host=codecompass-postgres;port=5432;user=your_user;password=your_password" \ | ||
| -w /CodeCompass/workspace \ | ||
| -n myproject \ | ||
| -i /projects/myproject | ||
| -b /projects/myproject/projectname/bin/Debug \ | ||
| -f | ||
| ``` | ||
|
|
||
| *Note*: the project directory should be mounted inside the container. | ||
|
|
||
| ### How to start a webserver | ||
| You can start a webserver inside the container by using the following command: | ||
| ```bash | ||
| # Run the web server. | ||
| CodeCompass_webserver \ | ||
| -w /CodeCompass/workspace | ||
| ``` | ||
|
|
||
| # Deployment | ||
|
|
||
| ## Build image for runtime | ||
| For a production environment you can build and use the runtime environment image, | ||
| which contains the built CodeCompass binaries and their dependencies: | ||
| ```bash | ||
| docker build -t codecompass:runtime --no-cache --file docker/runtime/Dockerfile . | ||
| ``` | ||
|
|
||
| By default this image download the `master` branch of the CodeCompass GitHub | ||
| repository and build it in `Release` mode with `sqlite` database configuration. | ||
| You can override these default values through the following build-time | ||
| variables: | ||
|
|
||
| | Variable | Meaning | | ||
| | -------------------- | ---------------------------------------- | | ||
| | `CC_REPO_URL` | The URL of the CodeCompass repository to use. | | ||
| | `CC_VERSION` | The branch, version hash or tag of the CodeCompass repository to use. | | ||
| | `CC_DATABASE`| Database type. Possible values are **sqlite**, **pgsql**. | | ||
| | `CC_BUILD_TYPE` | Specifies the build type. Supported values are **`Debug`** and **`Release`**. | | ||
|
|
||
| The below example builds the `codecompass:runtime` image with *pgsql* configuration: | ||
| ```bash | ||
| docker build -t codecompass:runtime --build-arg CC_DATABASE=pgsql \ | ||
| --no-cache --file docker/runtime/Dockerfile . | ||
| ``` | ||
|
|
||
| *Note*: the `codecompass:dev` is a prerequisite to build the `codecompass:runtime` image. | ||
|
|
||
| ## Build image for webserver | ||
| You can use the `codecompass:runtime` image created | ||
| [above](#build-image-for-runtime) to build an executing container for the webserver: | ||
| ```bash | ||
| docker build -t codecompass:web --no-cache --file docker/web/Dockerfile . | ||
| ``` | ||
|
|
||
| See more information [below](#how-to-run-codecompass-webserver-in-docker) how | ||
| to use this image to start a CodeCompass webserver. | ||
|
|
||
| ### How to use the webserver executing container | ||
| You can use the `codecompass:web` image to start a CodeCompass webserver. | ||
| For this run the following command: | ||
| ```bash | ||
| docker run \ | ||
| --volume /path/to/host/workspace/:/workspace \ | ||
| -p 8010:8080 \ | ||
| codecompass:web \ | ||
| CodeCompass_webserver -w /workspace | ||
| ``` | ||
|
|
||
| # Official DockerHub images | ||
|
|
||
| Prebuilt images can be downloaded from DockerHub, from the | ||
| [modelcpp/codecompass](https://hub.docker.com/r/modelcpp/codecompass) | ||
| repository. | ||
|
|
||
| The following image tags are available: | ||
|
|
||
| | Name | Description | | ||
| | ---- | ------------| | ||
| | `dev` | Development image | | ||
| | `runtime-sqlite` | Runtime image containing CodeCompass binaries built against SQLite | | ||
| | `runtime-pgsql` | Runtime image containing CodeCompass binaries built against PostrgreSQL | | ||
| | `web-sqlite` | Webserver executing container image built against SQLite | | ||
| | `web-pgsql` | Webserver executing container image built against PostgreSQL | | ||
|
|
||
| The default `latest` is an alias to `:runtime-pgsql`. | ||
| To download (or update) an image from DockerHub, issue the command | ||
| `docker pull modelcpp/codecompass:latest`. (Replace `latest` with the desired tag.) | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.