diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 00000000..b844b143
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1 @@
+Gemfile.lock
diff --git a/Dockerfile.test b/Dockerfile.test
new file mode 100644
index 00000000..062115ce
--- /dev/null
+++ b/Dockerfile.test
@@ -0,0 +1,15 @@
+FROM ubuntu:latest
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+RUN apt-get update && apt-get install -yq vim-gtk ruby2.5 xvfb
+
+COPY Gemfile /var/vim-elixir/Gemfile
+
+WORKDIR /var/vim-elixir
+
+RUN gem install bundler && bundle
+
+COPY . /var/vim-elixir
+
+ENTRYPOINT ["/var/vim-elixir/entrypoint.sh"]
diff --git a/entrypoint.sh b/entrypoint.sh
new file mode 100755
index 00000000..5571762e
--- /dev/null
+++ b/entrypoint.sh
@@ -0,0 +1,5 @@
+#! /usr/bin/env sh
+set -xe
+Xvfb :99 &
+export DISPLAY=:99
+rspec -f d
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 021d41cf..6e884a3a 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -257,7 +257,7 @@ def self.new
   config.reuse_server = true
 
   config.start_vim do
-    VIM = Vimrunner.start_gvim
+    VIM = Vimrunner.start
     VIM.add_plugin(File.expand_path('..', __dir__))
     cmd = ':filetype off<CR>'
     cmd += ':filetype plugin indent on<CR>'