Skip to content

Commit

Permalink
Remove a few more onbuild references
Browse files Browse the repository at this point in the history
  • Loading branch information
tianon committed Mar 8, 2018
1 parent c541692 commit 9d5f465
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 18 deletions.
21 changes: 15 additions & 6 deletions jruby/content.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,23 @@ JRuby leverages the robustness and speed of the JVM while providing the same Rub
## Create a `Dockerfile` in your Ruby app project

```dockerfile
FROM %%IMAGE%%:1.7-onbuild
FROM %%IMAGE%%:9

# 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`.

This image includes multiple `ONBUILD` triggers which should be all you need to bootstrap most applications. The build will `COPY . /usr/src/app` and `RUN bundle install`.

You can then build and run the Ruby image:

```console
Expand All @@ -32,16 +41,16 @@ $ docker run -it --name my-running-script my-ruby-app

### Generate a `Gemfile.lock`

The `onbuild` tag 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`:
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`:

```console
$ docker run --rm -v "$PWD":/usr/src/app -w /usr/src/app %%IMAGE%%:1.7 bundle install --system
$ docker run --rm -v "$PWD":/usr/src/app -w /usr/src/app %%IMAGE%%:9 bundle install --system
```

## Run a single Ruby script

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:

```console
$ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp %%IMAGE%%:1.7 jruby your-daemon-or-script.rb
$ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp %%IMAGE%%:9 jruby your-daemon-or-script.rb
```
24 changes: 19 additions & 5 deletions pypy/content.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,19 +13,33 @@ PyPy started out as a Python interpreter written in the Python language itself.
## Create a `Dockerfile` in your Python app project

```dockerfile
FROM %%IMAGE%%:3-onbuild
FROM %%IMAGE%%:3

WORKDIR /usr/src/app

COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD [ "pypy3", "./your-daemon-or-script.py" ]
```

or (if you need to use PyPy 2):
or (if you need to use Python 2):

```dockerfile
FROM %%IMAGE%%:2-onbuild
FROM %%IMAGE%%:2

WORKDIR /usr/src/app

COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD [ "pypy", "./your-daemon-or-script.py" ]
```

These images include multiple `ONBUILD` triggers, which should be all you need to bootstrap most applications. The build will `COPY` a `requirements.txt` file,`RUN pip install` on said file, and then copy the current directory into`/usr/src/app`.

You can then build and run the Docker image:

```console
Expand Down
22 changes: 15 additions & 7 deletions ruby/content.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,23 @@ Ruby is a dynamic, reflective, object-oriented, general-purpose, open-source pro
## Create a `Dockerfile` in your Ruby app project

```dockerfile
FROM %%IMAGE%%:2.1-onbuild
FROM %%IMAGE%%: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`.

This image includes multiple `ONBUILD` triggers which should be all you need to bootstrap most applications. The build will `COPY . /usr/src/app` and `RUN
bundle install`.

You can then build and run the Ruby image:

```console
Expand All @@ -29,18 +37,18 @@ $ docker run -it --name my-running-script my-ruby-app

### Generate a `Gemfile.lock`

The `onbuild` tag 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`:
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`:

```console
$ docker run --rm -v "$PWD":/usr/src/app -w /usr/src/app %%IMAGE%%:2.1 bundle install
$ docker run --rm -v "$PWD":/usr/src/app -w /usr/src/app %%IMAGE%%:2.5 bundle install
```

## Run a single Ruby script

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:

```console
$ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp %%IMAGE%%:2.1 ruby your-daemon-or-script.rb
$ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp %%IMAGE%%:2.5 ruby your-daemon-or-script.rb
```

## Encoding
Expand Down

0 comments on commit 9d5f465

Please sign in to comment.