Jetbrains Rider External Tools example based on Docker

Jetbrains Rider External Tools example based on Docker

Hello!

In my work I often use Docker Compose to start test environment (databases, message buses, etc). Usually, I restart or remove containers and rerun it from docker-compose.yml file. In general, compose files stores in %SolutionDir%/tests/ directory. In my pet projects I organise project structure in the same way.

To stay focused on code and stop switching on Docker-dashboard (or type commands) I need functionality that will:

restart containers from IDE
remove containers from IDE
start compose file from IDE
show actual state for every container from IDE

I found a solution to achieve all these goals. This is the Rider External Tools! This feature allows you to start shell-scripts, external apps and something like that. I want to show you how I use these tools.

Create an External Tool

The easiest way to show you creation tool is script for containers state.
Open the Rider IDE. Go to Settings → Tools → External Tools and click on the + button.

Add a name and a description (optional) to a new tool. For example the name is Container stats. You can type a new group name to create a specific group of your tools. Choose Docker as program. Add ps -a as arguments to docker command. Click OK button to save a tool.

Congratulations! You have created your first External Tool!

Add new tool to a toolbar

External Tools will not be so useful if it can’t be placed on toolbar. It’s very simple!
Open a context menu on a central toolbar (or any other).
And choose the Customize Toolbar… option.

In the opened menu choose Center toolbar and click the + button. Now you can add an External Tool as button on the toolbar or add a separator to divide groups of buttons.

To add your custom External Tool choose Add Action… → External Tools → %GroupName% → Container stats → OK. After that, choose your tool in list and click on the pencil button.

Now you can upload your own image for button or choose Jetbrains standard icons. I just typed docker and choose a nice Docker logo.

All done! Let’s test our new tool-button. Just click on it and you will see an output in Runner menu.

Use macros for specific commands

To start compose file just by clicking on external tool button – create new External Tool like on the screenshot:

The Working directory set with macros: <$UnixSeparators($ProjectFileDir$/tests)$> (for mac/linux).
This macros will create absolute path to your project folder and concatenate /tests postfix.

Add the new tool to toolbar and run it. You will see command output in the runner window.

With macros you can defined unique path (for a External Tool it must be absolute path) for you tool.

Thank you! Hope this article will be helpful to you!

See also

External Tools available not only for Rider!

External Tools Rider
Built-in IDE macros
External Tools IDEA
External Tools WebStorm

p.s.

You can create your own script and map it on a tool. For example:

docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q)

this script will stop all containers and remove it. This command can be executed from any directory.