diff --git a/.dockerignore b/.dockerignore
index ab8aaa028d882cb28dfcb4cef143664bd2264e3c..ff7192937010f3de4bf7a89b72fbfb74463af99f 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -1,5 +1,75 @@
+# Do not edit this file. It is generated from this command:
+# ./dockerignore.make
+
 .cargo
 .git*
 doc
+dockerignore.make
 gui
 test
+
+# ------------------
+# .gitignore content
+# ------------------
+
+*.sublime*
+node_modules/
+*.html
+npm-debug.log
+bin/jpgp*.jar
+.idea/
+gui/nw
+
+# Vim swap files
+*~
+*.swp
+*.swo
+
+# Vagrant
+.vagrant/
+vagrant/*.log
+vagrant/duniter
+
+# Python compiled
+*.pyc
+
+# Releases
+/work
+*.deb
+*.tar.gz
+*.log
+*.exe
+
+# vscode
+.vscode
+
+# istanbul
+.nyc_output
+coverage/
+
+# typecode
+typedoc/
+
+# files generated by tsc
+/index.js*
+/index.d.ts
+/server.js*
+/server.d.ts
+*/**/*.js*
+app/**/*.d.ts
+neon/lib/*.d.ts
+test/**/*.d.ts
+
+# files generated by neon
+neon/native/artifacts.json
+
+# rust binaries
+bin/duniter
+neon/native/index.node
+target
+
+# files generated by rust tests
+neon/native/tests/*.txt
+neon/native/tests/wotb-*
+test2.bin.gz
+**/*.wot
diff --git a/dockerignore.make b/dockerignore.make
new file mode 100755
index 0000000000000000000000000000000000000000..19c4721f5178add9c7945cc3bb9c3a99ce56ed73
--- /dev/null
+++ b/dockerignore.make
@@ -0,0 +1,44 @@
+#!/usr/bin/make -f
+
+define newline
+
+
+endef
+
+define echomultiline
+	/usr/bin/echo -e '$(subst $(newline),\n,$1)'
+endef
+
+define HEADER
+# Do not edit this file. It is generated from this command:
+# ./dockerignore.make
+
+endef
+
+define DOCKERIGNORE
+.cargo
+.git*
+doc
+dockerignore.make
+gui
+test
+endef
+
+define GITIGNORE_HEADER
+
+# ------------------
+# .gitignore content
+# ------------------
+
+endef
+
+all: .dockerignore
+
+.PHONY: .dockerignore
+
+.dockerignore: .gitignore
+	$(call echomultiline,$(HEADER)) >$@.tmp
+	$(call echomultiline,$(DOCKERIGNORE)) >>$@.tmp
+	$(call echomultiline,$(GITIGNORE_HEADER)) >>$@.tmp
+	cat .gitignore >>$@.tmp
+	mv $@.tmp $@