aghost-7 / docker-dev Goto Github PK
View Code? Open in Web Editor NEWContainer images for portable development environments
License: MIT License
Container images for portable development environments
License: MIT License
Will need to check if this works with all languages correctly though.
language defaults:
Could be handy to have python debugger integration. Looks like the project has matured significantly, hopefully things work: https://github.com/puremourning/vimspector
Not quite sure where this is going to head, but I'm thinking about moving off of travis ci and using my own jenkins server.
I need to start splitting the build at the very least, its currently pretty close to the cap (50 minues).
I need ternjs to be able to handle symlinks to paths inside a container to even consider using it. I think I could write a ternjs plugin which remaps the paths to locations which are valid outside the container.
Lots of /home/aghost-7
.
Right now, its not able to grab completions for libraries not part of the standard library. This will need to detect:
env
directory in the root of the project, with a bin/python
executable, use that virtual environment.Should add a new user which doesn't have root/docker access for when running commands such as npm install
(with just an alias). Could be tricky since I need to create the files with the same ownership as the original user, and also need to source the same bashrc (since nvm won't work otherwise).
Currently the hostname is displayed in the bottom right; its not particularity useful information. All I could think of which could be handy is having the language your tmux session is for. If you're working on flask + react you'll need to have one session for each language and its possible to mix up the sessions.
Seems I can move completion, etc to deoplete for rust: https://github.com/autozimu/LanguageClient-neovim
Doesn't seem to be picking up project-specified linters. Similar to issue #80
If black or prettier is present in the project, it should format the code automatically.
Instead of installing docker in its entirety, I should only install the client since that's all I need. Should save a few megabytes...
Since I'm reinstalling a whole lot of packages in my base image, it would probably take a lot less space if I squashed it.
for tmux.
It relies on the linker my the looks of it.
I should just use auto-expand option in the config.
Breaking changes were introduced in the newer version of TMUX. Need to figure how to get everything going on the newer version.
I want to be able to use my clipboard from any environment (either VM or native linux host). First step would be to add lemonade
for a remote clipboard utility, then I could write a script like the following:
if [ -z "$DISPLAY" ]; then
cat - | lemonade copy
else
cat - | /usr/bin/xclip -selection clipboard
fi
My only concern is that I will then have two xclip
executables on my path...
Would need to update the tmux configuration as well I think.
Bundling emscripten could be nice for the rust image 🤷♂️
I am trying to understand something with your build.sh. It has a number of 'apt-install' commands.
Is there a reason they are done in the script vs. the Dockerfile? If there were done in the Dockerfile, it seems like you could then better leverage docker layering. Just wondering.
Also need a decent config.
TMUX seems to have its own package manager. Maybe see what kind of plugins are out there?
I could probably start adding images for 20.04 (they are already available on docker hub). Will hold off on the language-specific ones due to stuff being likely to break.
I think this is my best bet for being able to contribute to multiple projects.
Not sure how useful this is going to be but looks pretty cool: https://github.com/j-bennet/wharfee
Coursier is a artefact fetcher for sbt. Since its able to download in parallel it is much faster than ivy2. Would be nice to add to the scala image.
Should add vader tests to ensure the autocompletion and such is always working.
This will require some major changes to the testing stuff. Every image should have a test directory which only executes if the image gets built:
test/vader
contains the vader teststest/sh
contains some shell scripts to test docker run commands.Could be nice for Rust: https://github.com/critiqjo/lldb.nvim
Looks like cargo isn't added to the path and the registry has the wrong permissions in the rust container. Probably just need to move this line to the end of the build script and update path?
https://github.com/AGhost-7/docker-dev/blob/master/images/rust-dev/base/rust-install.sh#L7
❯ docker run --rm -v ~/Code/ring:/home/aghost-7/ring -v /run/host-services/ssh-auth.sock:/run/host-services/ssh-auth.sock -e SSH_AUTH_SOCK="/run/host-services/ssh-auth.sock" -it aghost7/rust-dev:focal-stable /bin/bash
$ cd ring/
$ cargo build
bash: cargo: command not found
$ ~/.cargo/bin/c
cargo cargo-clippy cargo-fmt cargo-miri cargo-watch clippy-driver
$ ~/.cargo/bin/cargo build
error: failed to get `untrusted` as a dependency of package `ring v0.16.15 (/home/aghost-7/ring)`
Caused by:
failed to create directory `/home/aghost-7/.cargo/registry/index/github.com-1ecc6299db9ec823`
Caused by:
Permission denied (os error 13)
$ ls -la ~/.cargo
total 36
drwxr-xr-x 1 aghost-7 aghost-7 4096 Oct 23 15:54 .
drwxr-xr-x 1 aghost-7 aghost-7 4096 Oct 24 21:29 ..
drwxr-xr-x 2 aghost-7 aghost-7 4096 Oct 23 16:05 bin
-rw-r--r-- 1 aghost-7 aghost-7 465 Oct 23 16:05 .crates2.json
-rw-r--r-- 1 aghost-7 aghost-7 99 Oct 23 16:05 .crates.toml
-rw-r--r-- 1 aghost-7 aghost-7 37 Oct 23 15:53 env
-rw-r--r-- 1 aghost-7 aghost-7 0 Oct 23 15:53 .package-cache
drwxr-xr-x 2 root root 4096 Oct 23 15:51 registry
https://github.com/denoland/deno_install
is it worth adding this?
Currently evaluating but it seems like a very nice python repl.
~/.ptpython/config.py
thus far:
__all__ = (
'configure',
)
def configure(repl):
repl.vi_mode = True
repl.confirm_exit = False
repl.true_color = True
Hi! I saw that you're using tfswitch. It does not support Terragrunt and OpenTofu, so, I suggest you to switch to tool that can manage all of these tools together: https://github.com/tofuutils/tenv
If an image without any dependents fails to build, it shouldn't prevent other images from building. build.py
should still display the error and exit with a status code above 0 though.
Images that get pushed should also have their readmes updated. Looks like this can be done as part of the registry API.
https://github.com/tmux/tmux/wiki has 2.7 as stable now
Before committing, it should run static checks automatically if present in the project.
There are two language server implementations:
Neither seem to work properly... will need to take a second look at getting the first one running as a container. Seems to be how the vscode plugin currently works.
plugin.vim
:
Plug 'autozimu/LanguageClient-neovim', {
\ 'branch': 'next',
\ 'do': 'bash install.sh',
\ }
post-plugin.vim
:
nnoremap <F5> :call LanguageClient_contextMenu()<CR>
nnoremap <silent> K :call LanguageClient#textDocument_hover()<CR>
nnoremap <silent> gd :call LanguageClient#textDocument_definition()<CR>
nnoremap <silent> <F2> :call LanguageClient#textDocument_rename()<CR>
let workspaceVolume = '/home/jonathan/workspaces/foobar:/home/aghost-7/workspaces/foobar'
let g:LanguageClient_serverCommands = {
\ 'ruby': ['docker', 'run', '-i', '--rm', '-v', workspaceVolume, 'mtsmfm/language_server-ruby:latest']
\ }
Still need to find a good way to re-map the volume automatically, getcwd()
from vim isnt going to be enough.
Also will require storing my environment stuff under ~/.rvm/rubies
on the host...
todo list:
This looks like it could be nice: https://github.com/TylerBrock/mongo-hacker
Remove YCM from the base neovim image. To keep things DRY I'll instead just put an install script into the image. Then I can just run ycm-install --racer-completer
and use whatever plugins I may need.
Start replacing YCM stuff with deoplete completers. Candidates:
https://github.com/sebastianmarkow/deoplete-rust Not as good as YCM at this time.
Ensime vim already supports deoplete: https://github.com/ensime/ensime-vim/issues/282
https://github.com/zchee/deoplete-jedi Now in use.
neco-ghc already supports deoplete: https://github.com/eagletmt/neco-ghc
Build is currently failing: https://jenkins.jonathan-boudreau.com/blue/organizations/jenkins/docker-dev/detail/docker-dev/34/pipeline/
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.