Git missing in VS Code – No source control providers

I just installed Visual Studio Code 1.17 and opened a Git repository folder. When entering the Source Control tab I see a message "There are no active source control providers". I thought Git was baked into VSCode!?

To make matters worse, when I attempt to install additional SCM providers there is no option for Git. How do I get my Git back!?

Visual Studio Code, displaying “No source control providers”

162259 次浏览

Are you using MacOS? If you've updated Xcode lately, you may need to accept Xcode's terms of service agreement to use git.

$ sudo xcodebuild -license accept

Try xcode-select --install. In macOS git is attached to XCode’s Com­mand line tools

While the source control panel does not tell you this, but unfortunately just stays quiet about it, not offering anything, there is a way to have VS Code tell you this: On the “Welcome” page that is displayed when you start the application, there is a link “Clone Git repository…”. If you click there, VS Code will tell you that Git is missing:

It looks like Git is not installed on your system

The following code snippet demonstrates the effect of buffer_size in ds.shuffle:

t = tf.range(10)
ds = tf.data.Dataset.from_tensor_slices(t)
for batch in ds.shuffle(buffer_size=2, seed=42).batch(5):
print(batch)

tf.Tensor([1 2 0 3 5], shape=(5,), dtype=int32)
tf.Tensor([4 6 7 8 9], shape=(5,), dtype=int32)

Once you have installed Git and restarted Visual Studio Code, you will see a small Git icon at the top of the source control panel (unless you already have a repository opened of course):

Source control panel with a Git icon

Shuffle is an "action" (for who is familiar with Spark), which reads data of buffer_size into memory and shuffles it in-memory. After that the shuffled data is cut into batches according to the batch size. Note, how 5 has made it into the first batch (and nothing else from the second half of the data).

This will tell you that Git is there and you can click the icon to initialize a repository—or just open an existing repository.

What helped me is setting the value of git.path setting to the full path of my git.exe file. After that I was able to see the git logo:

git icon

I'm having the same issue as OP. My issue started when I installed a PHP autocomplete extension. I uninstalled the extension and poof, source control is back.

The problem

Whenever I run my projects JUnit test (using JUnit 5 with Java 9 and Eclipse Oxygen 1.a) I encounter the problem that eclipse can't find any tests.

tests.

The description

The description

Under the run configuration, eclipse can't even find the method which is annotated with @Test, but instead only shows me "(all methods)".

Under the run configuration, eclipse can't even find the method which is annotated with @Test, but instead only shows me "(all methods)". The following picture hopefully gives a better glimps of my setup:

https://imgur.com/a/FTe9c

The following picture hopefully gives a better glimps of my setup:

https://imgur.com/a/FTe9c

Console output:

java.lang.NoClassDefFoundError: org/junit/platform/launcher/core/LauncherFactory
at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.<init>(JUnit5TestLoader.java:31)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.base/java.lang.Class.newInstance(Unknown Source)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createRawTestLoader(RemoteTestRunner.java:368)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createLoader(RemoteTestRunner.java:363)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.defaultInit(RemoteTestRunner.java:307)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.init(RemoteTestRunner.java:222)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
Caused by: java.lang.ClassNotFoundException: org.junit.platform.launcher.core.LauncherFactory
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
... 11 more

Console output:

java.lang.NoClassDefFoundError: org/junit/platform/launcher/core/LauncherFactory
at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.<init>(JUnit5TestLoader.java:31)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.base/java.lang.Class.newInstance(Unknown Source)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createRawTestLoader(RemoteTestRunner.java:368)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createLoader(RemoteTestRunner.java:363)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.defaultInit(RemoteTestRunner.java:307)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.init(RemoteTestRunner.java:222)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
Caused by: java.lang.ClassNotFoundException: org.junit.platform.launcher.core.LauncherFactory
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
... 11 more

What I tried so far

What I tried so far

I've already tried

    I've already tried

    • to remove the test folder from build path and add it again.
    • to remove the test folder from build path and add it again.
    • to start the test with hovering over the method annotated with @Test and then click "Run as JUnit Test".
    • to start the test with hovering over the method annotated with @Test and then click "Run as JUnit Test".
    • remove JUnit from Buildpath and add it again
    • remove JUnit from Buildpath and add it again
    • restart eclipse
    • restart eclipse
    • I've also moved the project whole project from one machine to another machine and tried it with the provided eclipse installation there
    • I've also moved the project whole project from one machine to another machine and tried it with the provided eclipse installation there
    • to rename the test method.
    • to rename the test method.
    • to retype the @Test annotation
  • to retype the @Test annotation

Some of these steps can be found here, but in the end the problem remained.

I had this too. tried overriding the default git.path setting but that didn't work. What seemed to fix it for me was opening an existing repository .. just an empty folder that I created and did a 'git init' in at the command prompt. After I opened that folder I could click the Source Control button and it had all the git functions available and no longer said "There are no active source control providers". Furthermore, doing File->Close folder got me back to where I started. Another way was to click the small "branch" button ABOVE that message ("There are no active ...") and initialise a repository.

You ran into Eclipse bug 525948 which has already been fixed and which will be published in the upcoming release Oxygen.3 (4.7.3), March 21, 2018.

This message is very confusing!

" alt="enter image description here">

As workaround, put your test code in a separate project and add the project under test to the modulepath, but do not add a module-info.java to your test project. With your project, class and module naming, it should look something like this:

enter image description here

See also my video that shows Java 9 and JUnit 5 in Eclipse Oxygen.1a in action

<scope>test</scope> </dependency>

This did the trick for me (at least as long as I do not need JUnit5 explicitly).

I got the same problem after creating a new TestCase: Eclipse -> New -> JUnit Test Case. It creates a class without access level modifier. I could solve the problem by just putting a public before the class keyword.

If this helps; I did face the same issue with the latest version of VS Code and tried all the mentioned tips, but no luck. Finally, I added a folder to a workspace, saved that workspace, and then when I checked the repo icon, could see the small git icon and can as well clone a repo from the command palette.

e small git icon and can as well clone a repo from the command palette.

Raised an issue for this and commented the same findings. Can be found here https://github.com/Microsoft/vscode/issues/49469

All you have to do after this is to select the profile in your local Eclipse: Right click on your project and select Maven > Select Maven Profiles... (or hit Ctrl + Alt + P), and then check the "eclipse" profile we just created.

Selection Of Maven Profile

FYI, another cause of "No tests found using junit5" is (inadvertently or intentionally) declaring the test cases "private":

// Example of test case that doesn't get included
@Test
private void testSomeMethod() {
}

With that you are done. Your Eclipse will run Junit 5 tests as expected, but the configuration you added won't pollute other builds or other IDE

ctice JunitAndMactioPractice

Following Andrii Karaivanskyi's answer here's the Maven POM declaration:

<properties>
...
<junit-jupiter.version>5.2.0</junit-jupiter.version>
<junit-platform.version>1.2.0</junit-platform.version>
...
</properties>


<dependencies>
...
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit-jupiter.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
<version>${junit-platform.version}</version>
<scope>test</scope>
</dependency>
...
</dependencies>
0.0.1-SNAPSHOT

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<junit.jupiter.version>5.1.1</junit.jupiter.version>
<junit.platform.version>1.1.1</junit.platform.version>
</properties>


<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
</build>


<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.jupiter.version}</version>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-runner</artifactId>
<version>${junit.platform.version}</version>
<scope>test</scope>
</dependency>
</dependencies>

UPDATE

</dependencies>

I'm using:

</project>

Spring Tool Suite 4 Version: 4.4.2.RELEASE

You can see that now you only have to update the version in one place if you want to update JUnit. Also the platform version number does not need to appear (in a compatible version) anywhere in your POM, it's automatically managed via the junit-bom import.

I ran into the same problem and figured out that VSCode does not recognize git repo unless it is added to a workspace.

Build Id: 201911201053

So, add the folder you want to be tracked via Git into a workspace and git will be enabled automatically.

Just added my Test.class via eclipse menu and worked.

I had just setup a new node project and I was getting this. I had to create a .gitignore file and add node_modules to it and then vscode looked correct. From what I can tell it might be because there are other git repos in the my node_modules and vscode was seeing those as well. Not sure the technical reasons but that seems to have fixed it for me.

Check the (unchecked) box next to Enabled - Whether git is enabled.

Git enabled setting

I faced this issue with Eclipse (Version: 2019-12 (4.14.0)) too. The solution seems either to use IntelliJ or to use the Maven test to run such tests in Eclipse.

Realizing this is an old thread, but you have to set the path to git in VS Code's settings.json file.

{
"git.alwaysShowStagedChangesResourceGroup": true,
"git.autofetch": true,
"git.path": "D:\\program files\\Git\\bin\\git.exe"
}
I could then go to Source Control by Ctrl+shift+G.

It may cause by the version of junit-platform-launcher / junit-platform-runner.

on looked less feasible or risky to me.

1.1.0 does not work

Thanks.

Then your VS Code will to see that it is git repository, and it will works.

you should know that :

  • It started to work for me again.
  • rg.junit.jupiter.api.Test"

    so make sure you are using the imports from the same version of Junit , otherwise it w'ont Work I guess.

    Simplest steps what worked for me:

    @Before from junit4 goes with @Test : "import org.junit.Test"

    AND

    1. Download and install Git on your machine as mentioned in Poke's answer.
    2. Restart VS Code.

    @BeforeEach from Junit5 goes with : "import org.junit.jupiter.api.Test"

    3. Open Command Prompt (Crtl+Shift+P) and write 'Git: Initialize Repository' and choose a folder you like (it can be even a temp folder).

    so make sure you are using the imports from the same version of Junit , otherwise it w'ont Work I guess.

    4. Finally Git logo appears as shown in Torvin's answer and then its easy to set up your git account and start using it.

    Now, restart VSCode

    SIMPLE FIX: (Add JUnit 5 Library)

    None of this worked for me. Was annoyed so much that I swept cleaned my installation to see if that makes a difference. That also did not work.

    INSTRUCTIONS:

      What worked was

    • Right click on project -> Build Path -> Configure Build Path
    • Click on View > Open View > Source Control

    • In the pop-up -> Add Library -> JUnit -> JUnit 5 -> Finish -> Apply
    • This will open the git view.

    • You should see the JUnit 5 Library (and its jars) added to your project
    • Right click on project -> Maven -> Update Project -> OK

    When the git view is shown, right click on the Icon > Click on "Keep"

    VS Code Keep Source Control

    "You can clone a Git repository with the Git: Clone command in the Command Palette (Ctrl+Shift+P). (edit: Type in 'git: clone' in the command box) You will be asked for the URL of the remote repository"

    I copied some code and created a TC. Basically converted a normal java class to JUnit TC.

    I hope this helps someone as there is so much confusion about this. MS should really improve how this behaves for a more consistent user experience - which they may well do at some point.

    I was gettgig error.

    All I had to do is select a git controlled folder. This made git icon appear and looks like now it appears every time. Maybe I just had to select a folder...

    If you have your Git repo opened on another machine it will not be available on the machine you are currently using. You have to close the VSCode instance on one machine before you can access your source control on another.

    I also faced the same issue you just need to add the library , Junit Library is already provided along with Eclipse so you just need to follow below

    xt > finish

    Build Path > Configure Build Path > library > Add library > JUnit > Next > finish

    It works for me

    I did not see the Git controls until I created a file and saved the current workspace - suddenly "Source Code Control" showed the Git Icon and I could initialize a new Git repo.

    It works for me

    Cloning an existing repo seems to be unsupported in VS Code, and I guess that is the reason that Git controls are hidden until there is a workspace where a new repo can be initialized.

  • After installing the SCM remember to close and reopen VS Code.

  • <attribute name="maven.pomderived" value="true"/> </attributes> </classpathentry>

    to this:

    <classpathentry kind="src" output="target/test-classes" path="src/test/java">
    <attributes>
    <attribute name="test" value="true"/>
    <attribute name="optional" value="true"/>
    <attribute name="maven.pomderived" value="true"/>
    </attributes>
    </classpathentry>
    
  • Open VS Code > File > Open Folder > (select the folder you just initialized Git at)
  • Post to this restart VS code & you are good to go.

    Right after it worked perfectly.

    @Test annotation must be imported from org.junit.jupiter.api.Test so the Junit5 can read it.

    Wow I spent so long on this. For me I had to go to the Extensions area > then click the ... at top right of menu > Show built-in Extensions

    Junit4 use @Test annotations imported from org.junit.Test package.

    Git built-in extension was disabled!!

    screencapture

    I got the idea of above command from following VSCode online documentation.

    different folder than I specified, this being target/test-classes. If I manually move my class files from the Output Folder folder that I specified to the target/test-classes folder, then my unit tests will run.

    I went through painfully one by one on the existing answers and none of them applied to me and none of them fixed it for me.

    So make sure that your class files are in the location that the runtime thinks they should be in.

  • Restart VS Code multiple times
  • I ended up trying Ctrl + shift + G and noticed a command at the bottom of VS code.

    enter image description here

    If you use beforeAll, beforeEach methods, remove them and then run. If you dont get any errors, you can change your the methods static situation.

    All I did was press the G key and the icon suddenly appeared and everything works perfectly!

    lang?

    What is the difference between backticks (``) & double quotes ("") in golang?

    Open Visual Studio Code, click left-bottom ⚙️ (gears) and select Command Palette.

    /p>

    Search for the word "enable", and select Enable All Extensions.

    "https://golang.org/ref/spec#String_literals" rel="noreferrer">https://golang.org/ref/spec#String_literals

    Thus, if you say \n in a backtick string, it will be interpreted as the literal backslash and character n.

    a := "\n" // This is one character, a line break.
    b := `\n` // These are two characters, backslash followed by letter n.
    

    In my case, For Ubuntu 18.04.2. I uninstall the program [from (Ubuntu software) or programs (menu)], and then delete all .vscode carpets in ../../desktop

    Raw string literals are character sequences between backticks. Backslashs ('\') have no special meaning and Carriage return characters ('\r') inside raw string literals are discarded from the raw string value.

    then install visual studio code again. that fixed.

    Interpreted string literals are character sequences between double quotes ("\r", "\n", ...)

    Note: The extensions delete too.

    Visual Studio Code screenshot

  • For struct tags to put double quotes in.

  • `` represents an uninterpreted strings and "" is an interpreted string.

    PS: italicized words are mine

    https://golang.org/ref/spec#String_literals

    The value of a raw string literal (uninterpreted strings) is the string composed of the uninterpreted (implicitly UTF-8-encoded) characters between the quotes

    For future prospects, if anyone is facing a problem like mine. This may be a solution.

    Right-click and enable the option.

    Docker Swarm can manage two types of storage:

    volume and bind

  • And visit source control. You will see the clone repository
  • re are volumes saved (on a manager? And if there is more than one manager?)

    While bind is not suggested by Docker Documentation since it creates a binding between a local directory (on each swarm Node) to a task, the volume implementation is not mentioned, so I don't understand how volumes are shared between tasks?

    • How does Docker Swarm shares volumes between nodes?
    • Is there no problem between nodes if it's running on different machines on different networks?
    • Does it create a VPN?

    There are lots of 3rd party volume drivers, which you can find on the Docker Store.

    is useful for a replicated service.

    Swarm Mode itself does not do anything different with volumes, it runs any volume mount command you provide on the node where the container is running. If your volume mount is local to that node, then your data will be saved locally on that node. There is no built in functionality to move data between nodes automatically.

    The most common file based network storage is NFS (this is the same protocol used by EFS). And you can mount that without any 3rd party plugin drivers. The unfortunately named "local" volume plugin driver that docker ships with give you the option to pass any values you want to the mount command with driver options, and with no options, it defaults to storing volumes in the docker directory /var/lib/docker/volumes. With options, you can pass it the NFS parameters, and it will even perform a DNS lookup on the NFS hostname (something you don't have with NFS normally). Here's an example of the different ways to mount an NFS filesystem using the local volume driver:

      # create a reusable volume
    $ docker volume create --driver local \
    --opt type=nfs \
    --opt o=nfsvers=4,addr=192.168.1.1,rw \
    --opt device=:/path/to/dir \
    foo
    
    
    # or from the docker run command
    $ docker run -it --rm \
    --mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=nfs,\"volume-opt=o=nfsvers=4,addr=192.168.1.1\",volume-opt=device=:/host/path \
    foo
    
    
    # or to create a service
    $ docker service create \
    --mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=nfs,\"volume-opt=o=nfsvers=4,addr=192.168.1.1\",volume-opt=device=:/host/path \
    foo
    
    
    # inside a docker-compose file
    ...
    volumes:
    nfs-data:
    driver: local
    driver_opts:
    type: nfs
    o: nfsvers=4,addr=192.168.1.1,rw
    device: ":/path/to/dir"
    ...
    

    There are some software based distributed storage solutions like GlusterFS, and Docker has one called Infinit which is not yet GA and development on that has taken a back seat to the Kubernetes integration in EE.

    If you use the compose file example at the end, note that changes to a volume (e.g. updating the server path or address) are not reflected in existing named volumes for as long as they exist. You need to either rename your volume, or delete it, to allow swarm to recreate it with new values.

    The typical result is you either need to manage replication of storage within your application (e.g. etcd and other raft based algorithms) or you perform your mounts on an external storage system (hopefully with its own HA). Mounting an external storage system has two options, block or file based. Block based storage (e.g. EBS) typically comes with higher performance, but is limited to only be mounted on a single node. For this, you will typically need a 3rd party volume plugin driver to give your docker node access to that block storage. File based storage (e.g. EFS) has lower performance, but is more portable, and can be simultaneously mounted on multiple nodes, which is useful for a replicated service.

    The other common issue I see in most NFS usage is "root squash" being enabled on the server. This results in permission issues when containers running as root attempt to write files to the volume. You also have similar UID/GID permission issues where the container UID/GID is the one that needs permissions to write to the volume, which may require directory ownernship and permissions to be adjusted on the NFS server.

    The most common file based network storage is NFS (this is the same protocol used by EFS). And you can mount that without any 3rd party plugin drivers. The unfortunately named "local" volume plugin driver that docker ships with give you the option to pass any values you want to the mount command with driver options, and with no options, it defaults to storing volumes in the docker directory /var/lib/docker/volumes. With options, you can pass it the NFS parameters, and it will even perform a DNS lookup on the NFS hostname (something you don't have with NFS normally). Here's an example of the different ways to mount an NFS filesystem using the local volume driver:

      # create a reusable volume
    $ docker volume create --driver local \
    --opt type=nfs \
    --opt o=nfsvers=4,addr=192.168.1.1,rw \
    --opt device=:/path/to/dir \
    foo
    
    
    # or from the docker run command
    $ docker run -it --rm \
    --mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=nfs,\"volume-opt=o=nfsvers=4,addr=192.168.1.1\",volume-opt=device=:/host/path \
    foo
    
    
    # or to create a service
    $ docker service create \
    --mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=nfs,\"volume-opt=o=nfsvers=4,addr=192.168.1.1\",volume-opt=device=:/host/path \
    foo
    
    
    # inside a docker-compose file
    ...
    volumes:
    nfs-data:
    driver: local
    driver_opts:
    type: nfs
    o: nfsvers=4,addr=192.168.1.1,rw
    device: ":/path/to/dir"
    ...
    

    In my case I just close VS code, and then open new window and open folder, like this:

    enter image description here

    But just cancel that and you will see that all the source control goodness and file tracking has been restored.

    My solution for our locally hosted swarm: tem Größe Benutzt Verf. Verw% Eingehängt auf every worker node has mounted an nfs-share, provided by our fileserver on /mnt/docker-data. When I define volumes in my services compose files, I set the device to some path under /mnt/docker-data, for example:

    volumes:
    traefik-logs:
    driver: local
    driver_opts:
    o: bind
    device: /mnt/docker-data/services/traefik/logs
    type: none
    
    [...]

    With this solution, docker creates the volume on every node, the service is deployed to and - surprise - there is data already, because it is the same path, which was used by the volume on the other node.

    fs.mydomain.com:/srv/shares/docker-data/services/traefik/logs 194G 141G 53G 73% /var/lib/docker/volumes/traefik_traefik-logs/_data

    Enter the Add-ons field in VS Code and; @builtin git write.

    by default swarm will always look for local volume driver ,so the best way is to

      For Example

      enter image description here

    1. create nfs share i.e. yum -y install nfs-utils
    2. Then enable it.

    3. export it in /etc/exports as below, d --permanent --add-service mountd ; firewall-cmd --permanent --add-service rpc-bind ; firewall-cmd --permanent --add-service nfs ; firewall-cmd --zone=public --permanent --add-port 2049/tcp
    4. /root/nfshare 192.168.1.0/24(rw,sync,no_root_squash)
    5. mount newly created share on docker worker nodes & then
    6. open required ports, in my case i did below,
    7. docker service create --name my-web --replicas 3 -p 80:80 --mount 'type=volume,source=nfshare,target=/usr/share/nginx/html/,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:/root/nfshare,"volume-opt=o=addr=192.168.1.8,rw"' nginx:latest
    8. firewall-cmd --permanent --add-service mountd ; firewall-cmd --permanent --add-service rpc-bind ; firewall-cmd --permanent --add-service nfs ; firewall-cmd --zone=public --permanent --add-port 2049/tcp
    9. in above example i have created nfshare on 192.168.1.8 host & exported using /etc/exports file
    10. mount newly created share on docker worker nodes & then
    11. started daemon(s)
    12. docker service create --name my-web --replicas 3 -p 80:80 --mount 'type=volume,source=nfshare,target=/usr/share/nginx/html/,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:/root/nfshare,"volume-opt=o=addr=192.168.1.8,rw"' nginx:latest
    13. systemctl start nfs-server rpcbind & systemctl enable nfs-server rpcbind
    14. in above example i have created nfshare on 192.168.1.8 host & exported using /etc/exports file
    15. started daemon(s)
    16. exportfs -r to changes take effect
    17. systemctl start nfs-server rpcbind & systemctl enable nfs-server rpcbind
    18. /root/nfshare have my own index.html 10.check volume-drive entry carefully , it can be external also & whoa it worked for me
    19. exportfs -r to changes take effect
    20. for more reference https://docs.docker.com/storage/volumes/
  • /root/nfshare have my own index.html 10.check volume-drive entry carefully , it can be external also & whoa it worked for me
  • You can try to install Jira and Bitbucket Extention