-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Refactor session handler Moved session handler to separate package that can be globally referenced * Update README.md
- Loading branch information
Phil Switzer
authored
Mar 8, 2023
1 parent
de417e7
commit 12f69ef
Showing
1 changed file
with
15 additions
and
100 deletions.
There are no files selected for viewing
This file contains 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 |
---|---|---|
@@ -1,110 +1,25 @@ | ||
# ngrok | ||
<h1> <img src="https://user-images.githubusercontent.com/550861/222650471-a1908709-8920-406b-a55d-b8231cd3a4a5.svg" width="25"> Ngrok Docker Desktop Extension</h1> | ||
|
||
![ngrok-logo](https://user-images.githubusercontent.com/550861/222650471-a1908709-8920-406b-a55d-b8231cd3a4a5.svg) | ||
Get your local Docker containers on the internet using [Ngrok](https://ngrok.com/) with this Docker Desktop extension. | ||
|
||
This repository defines an example of a Docker extension. The files in this repository have been automatically generated as a result of running `docker extension init`. | ||
## Installation | ||
|
||
This extension is composed of: | ||
To install the extension: | ||
|
||
- A [frontend](./ui) app in React that makes a request to the `/hello` endpoint and displays the payload in Docker Desktop. | ||
- A [backend](./backend) container that runs an API in Go. It exposes the `/hello` endpoint which returns a JSON payload. | ||
1. Open Docker Desktop and go to the extensions marketplace. | ||
2. Search for "Ngrok" and click "Install". | ||
3. Once installed, activate the extension by clicking on the Ngrok icon in the Docker Desktop toolbar. | ||
|
||
> You can build your Docker Extension using your fav tech stack: | ||
> | ||
> - Frontend: React, Angular, Vue, Svelte, etc. | ||
> Basically, any frontend framework which generates an index.html with CSS, and JS assets. | ||
> - Backend (optional): anything that can run in a container. | ||
## Usage | ||
|
||
<details> | ||
<summary>Looking for more templates?</summary> | ||
To use the extension: | ||
|
||
1. [React + NodeJS](https://github.com/benja-M-1/node-backend-extension). | ||
2. [React + .NET 6 WebAPI](https://github.com/felipecruz91/dotnet-api-docker-extension). | ||
|
||
Request one or submit yours [here](https://github.com/docker/extensions-sdk/issues). | ||
|
||
</details> | ||
|
||
## Local development | ||
|
||
You can use `docker` to build, install and push your extension. Also, we provide an opinionated [Makefile](Makefile) that could be convenient for you. There isn't a strong preference of using one over the other, so just use the one you're most comfortable with. | ||
|
||
To build the extension, use `make build-extension` **or**: | ||
|
||
```shell | ||
docker buildx build -t ngrok/ngrok-docker-extension:latest . --load | ||
``` | ||
|
||
To install the extension, use `make install-extension` **or**: | ||
|
||
```shell | ||
docker extension install ngrok/ngrok-docker-extension:latest | ||
``` | ||
|
||
> If you want to automate this command, use the `-f` or `--force` flag to accept the warning message. | ||
To preview the extension in Docker Desktop, open Docker Dashboard once the installation is complete. The left-hand menu displays a new tab with the name of your extension. You can also use `docker extension ls` to see that the extension has been installed successfully. | ||
|
||
### Frontend development | ||
|
||
During the development of the frontend part, it's helpful to use hot reloading to test your changes without rebuilding your entire extension. To do this, you can configure Docker Desktop to load your UI from a development server. | ||
Assuming your app runs on the default port, start your UI app and then run: | ||
|
||
```shell | ||
cd ui | ||
npm install | ||
npm run dev | ||
``` | ||
|
||
This starts a development server that listens on port `3000`. | ||
|
||
You can now tell Docker Desktop to use this as the frontend source. In another terminal run: | ||
|
||
```shell | ||
docker extension dev ui-source ngrok/ngrok-docker-extension:latest http://localhost:3000 | ||
``` | ||
|
||
In order to open the Chrome Dev Tools for your extension when you click on the extension tab, run: | ||
|
||
```shell | ||
docker extension dev debug ngrok/ngrok-docker-extension:latest | ||
``` | ||
|
||
Each subsequent click on the extension tab will also open Chrome Dev Tools. To stop this behaviour, run: | ||
|
||
```shell | ||
docker extension dev reset ngrok/ngrok-docker-extension:latest | ||
``` | ||
|
||
### Backend development (optional) | ||
|
||
This example defines an API in Go that is deployed as a backend container when the extension is installed. Note that an extension doesn't necessarily need a backend container, but in this example we include one for teaching purposes. | ||
|
||
Whenever you make changes in the [backend](./backend) source code, you will need to compile them and re-deploy a new version of your backend container. | ||
Use the `docker extension update` command to remove and re-install the extension automatically: | ||
|
||
```shell | ||
docker extension update felipecruz/ngrok-docker-extension:latest | ||
``` | ||
|
||
> If you want to automate this command, use the `-f` or `--force` flag to accept the warning message. | ||
> Extension containers are hidden from the Docker Dashboard by default. You can change this in Settings > Extensions > Show Docker Extensions system containers. | ||
### Clean up | ||
|
||
To remove the extension: | ||
|
||
```shell | ||
docker extension rm felipecruz/ngrok-docker-extension:latest | ||
``` | ||
1. Start the container(s) you want to expose in Docker Desktop. | ||
2. Click on the Ngrok icon in the Docker Desktop toolbar. | ||
3. Authenticate with Ngrok by clicking "Authenticate" and pasting in your authtoken from the [Ngrok dashboard](https://dashboard.ngrok.com/get-started/your-authtoken). | ||
4. Start a tunnel by clicking start icon in the Ngrok extension window. | ||
5. You now have a public URL that you can share with anyone. | ||
|
||
## Screenshots | ||
<img width="1292" alt="containers" src="https://user-images.githubusercontent.com/550861/222644761-b30982aa-e81a-4546-9678-dadfc731e0fc.png"> | ||
<img width="1292" alt="settings" src="https://user-images.githubusercontent.com/550861/222644829-3b717704-5b58-455f-b729-dad4c96daf18.png"> | ||
|
||
## What's next? | ||
|
||
- To learn more about how to build your extension refer to the Extension SDK docs at https://docs.docker.com/desktop/extensions-sdk/. | ||
- To publish your extension in the Marketplace visit https://www.docker.com/products/extensions/submissions/. | ||
- To report issues and feedback visit https://github.com/docker/extensions-sdk/issues. | ||
<img width="1292" alt="settings" src="https://user-images.githubusercontent.com/550861/222644829-3b717704-5b58-455f-b729-dad4c96daf18.png"> |