-
Where to file issues:
https://github.com/Gusto/ruby/issues -
Maintained by:
Gusto Engineering -
Source of this description:
DESCRIPTION.md (history)
Ruby is a dynamic, reflective, object-oriented, general-purpose, open-source programming language. According to its authors, Ruby was influenced by Perl, Smalltalk, Eiffel, Ada, and Lisp. It supports multiple programming paradigms, including functional, object-oriented, and imperative. It also has a dynamic type system and automatic memory management.
FROM gusto/ruby:2.5
# throw errors if Gemfile has been modified since Gemfile.lock
RUN bundle config --global frozen 1
WORKDIR /usr/src/app
COPY Gemfile Gemfile.lock ./
RUN bundle install
COPY . .
CMD ["./your-daemon-or-script.rb"]
Put this file in the root of your app, next to the Gemfile
.
You can then build and run the Ruby image:
$ docker build -t my-ruby-app .
$ docker run -it --name my-running-script my-ruby-app
The above example Dockerfile
expects a Gemfile.lock
in your app directory. This docker run
will help you generate one. Run it in the root of your app, next to the Gemfile
:
$ docker run --rm -v "$PWD":/usr/src/app -w /usr/src/app gusto/ruby:2.5 bundle install
For many simple, single file projects, you may find it inconvenient to write a complete Dockerfile
. In such cases, you can run a Ruby script by using the Ruby Docker image directly:
$ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp gusto/ruby:2.5 ruby your-daemon-or-script.rb
By default, Ruby inherits the locale of the environment in which it is run. For most users running Ruby on their desktop systems, that means it's likely using some variation of *.UTF-8
(en_US.UTF-8
, etc). In Docker however, the default locale is C
, which can have unexpected results. If your application needs to interact with UTF-8, it is recommended that you explicitly adjust the locale of your image/container via -e LANG=C.UTF-8
or ENV LANG C.UTF-8
.
This image sets several environment variables which change the behavior of Bundler and Gem for running a single application within a container (especially in such a way that the development sources of the application can be bind-mounted inside a container and not have .bundle
from the host interfere with the proper functionality of the container).
The environment variables we set are canonically listed in the above-linked Dockerfiles
, but some of them include GEM_HOME
, BUNDLE_PATH
, BUNDLE_BIN
, BUNDLE_SILENCE_ROOT_WARNING
, and BUNDLE_APP_CONFIG
.
If these cause issues for your use case (running multiple Ruby applications in a single container, for example), setting them to the empty string should be sufficient for undoing their behavior.
This is the image naming scheme.
This tag is based off of ubuntu
.
The tags can also specify a specific version of ubuntu (ie gusto/ruby:2.5-ubuntu14.04
)
View license information for the software contained in this image.
As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained).
The license information for the github repository can be found in the repository's LICENSE file.
As for any pre-built image usage, it is the image user's responsibility to ensure that any use of this image complies with any relevant licenses for all software contained within.