Skip to content
This repository has been archived by the owner on Nov 11, 2019. It is now read-only.

please: docker dev image #405

Closed
wants to merge 1 commit into from
Closed

Conversation

garbas
Copy link
Contributor

@garbas garbas commented Jun 15, 2017

@jankeromnes This is a follow up on the meeting we had some time ago.

Running ./please tools base-image --dev --docker-username=??? --docker-password=??? should now generate and push 2 docker images (base-latest and dev-latest).

Can you test if mozillareleng/services:dev-latest image will work with Janitor?

ps. i'm just running the command so it might take 30min for image to be there.

@jankeromnes
Copy link
Contributor

jankeromnes commented Jun 15, 2017

Thank you for following up on this!

It can work with Janitor if we install a few additional dependencies (Cloud9 SDK and noVNC). Also in general, I like to install the latest stable tools that developers might need or like, to make images really convenient to use, and I also create a user called "user" and place all sources in /home/user so that users don't develop as root.

That's why I usually base all Janitor project images on top of ubuntu-dev (basically Ubuntu 16.04 with a lot of nice recent/pre-configured tools). However, I think I will need to adapt this base Dockerfile to work on top of pre-existing developer images (e.g. to apply it on top of your mozillareleng/services:dev-latest image, and on top of docker-bmo-dev, etc).

@garbas
Copy link
Contributor Author

garbas commented Jun 15, 2017

@jankeromnes Do you have a list of this tools?

I'm not sure we should add this tools to docker image, but rather into build environment of each project. Adding it to docker image would ignore people that does not use docker for development. Adding tools per project (eg. each python package gets pdbbb as a buildtime dependency) would result ending up in docker file as would in your case, just they would bubble up from project specification. In any case I would love to review this list of tools with you and document them somewhere.

Regarding ubuntu-dev, I think it holds more value that you stay close to what your production/ci environment looks like and I don't think it makes sense to switch base image for base-latest or dev-latest.

@jankeromnes
Copy link
Contributor

@jankeromnes Do you have a list of this tools?

Yes, it's all the tools installed in https://github.com/JanitorTechnology/dockerfiles/blob/master/ubuntu-dev/ubuntu-dev.dockerfile, most notably:

  • clang-4.0
  • curl
  • emacs
  • gdb
  • htop
  • less
  • latest stable mercurial (from PPA)
  • nano
  • latest stable neovim (from PPA)
  • openssh-server (in order to SSH into container, which is what Cloud9 IDE uses to control a container)
  • sudo
  • supervisor (for running multiple things in parallel with the Dockerfile CMD)
  • x11vnc (for projects that need noVNC)
  • xvfb (for projects that need noVNC)
  • latest stable Git (compiled from sources with profile build to be as fast as possible)
  • hub (to manage GitHub forks and pull request from command line)
  • latest stable Node.js (compiled from sources because apt-get lags)
  • latest stable rr (for record-replay debugging)
  • rustup, cargo, rustc; all as both stable and nightly
  • ripgrep (for extremely fast grepping)
  • z (for navigating around folders very efficiently)
  • latest stable Vim 8 (compiled from sources)
  • Cloud9 SDK (to be able to run Cloud9 IDE directly from within the container)
  • noVNC (in order to serve a web-based VNC client to have a graphical environment)

Basing images on top of janx/ubuntu-dev gives you all of this (and when Docker images are hosted on Janitor, copy-on-write allows to only ever store 1 copy of this big base image).

I would love to adapt this utilities Dockerfile with FROM any-dev-image so that I could easily import foreign dev Docker images to Janitor while still offering the same convenient/recent tools to every user.

@garbas
Copy link
Contributor Author

garbas commented Jun 16, 2017

@jankeromnes i see, i'll add --dev-janitoroption to build based on janx/ubuntu-dev

@jankeromnes
Copy link
Contributor

@garbas interesting, if that works it will mean less work for me, but I do believe that I'll have to build some Janitor images on top of foreign images at some point anyway, so I could also adapt your developer image as is

@garbas garbas closed this Jun 19, 2017
@garbas garbas deleted the docker-dev-image branch June 19, 2017 14:28
Copy link
Contributor

@jankeromnes jankeromnes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like this was closed unmerged. Dismissing the review request, but I'd be excited to help out if this project gets picked up again!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants