add D-in-D dockerfile, update Readme
This commit is contained in:
33
Dockerfile.dind
Normal file
33
Dockerfile.dind
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
# Use the official Docker docker-in-docker Alpine image as the base image
|
||||||
|
FROM docker:dind
|
||||||
|
|
||||||
|
# Set the working directory to /mrsk
|
||||||
|
WORKDIR /mrsk
|
||||||
|
|
||||||
|
# Copy the Gemfile, Gemfile.lock into the container
|
||||||
|
COPY Gemfile Gemfile.lock mrsk.gemspec ./
|
||||||
|
|
||||||
|
# Required in mrsk.gemspec
|
||||||
|
COPY lib/mrsk/version.rb /mrsk/lib/mrsk/version.rb
|
||||||
|
|
||||||
|
# Install system dependencies including ruby-dev
|
||||||
|
RUN apk add --no-cache --update ruby-dev build-base git docker openrc \
|
||||||
|
&& rc-update add docker boot \
|
||||||
|
&& gem install bundler --version=2.4.3 \
|
||||||
|
&& bundle install
|
||||||
|
|
||||||
|
# Copy the rest of our application code into the container.
|
||||||
|
# We do this after bundle install, to avoid having to run bundle
|
||||||
|
# everytime we do small fixes in the source code.
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
# Install the gem locally from the project folder
|
||||||
|
RUN gem build mrsk.gemspec && \
|
||||||
|
gem install ./mrsk-*.gem --no-document
|
||||||
|
|
||||||
|
# Set the working directory to /workdir
|
||||||
|
WORKDIR /workdir
|
||||||
|
|
||||||
|
# Set the entrypoint to run the installed binary in /workdir
|
||||||
|
# Example: docker run -it -v "$PWD:/workdir" mrsk init
|
||||||
|
ENTRYPOINT ["mrsk"]
|
||||||
16
README.md
16
README.md
@@ -6,7 +6,19 @@ Watch the screencast: https://www.youtube.com/watch?v=LL1cV2FXZ5I
|
|||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
Install MRSK globally with `gem install mrsk`. Then, inside your app directory, run `mrsk init` (or `mrsk init --bundle` within Rails apps where you want a bin/mrsk binstub). Now edit the new file `config/deploy.yml`. It could look as simple as this:
|
Install MRSK globally with `gem install mrsk` or build a dockerized version:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
docker build . -t mrsk:dind -t mrsk:latest -f Dockerfile.dind
|
||||||
|
```
|
||||||
|
|
||||||
|
If you build the docker version, add the following alias to your .${SHELL}rc file and re-source the rc file to allow ssh and docker to work within the container:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
alias mrsk='docker run --rm -it -v $HOME/.ssh:/root/.ssh -v /var/run/docker.sock:/var/run/docker.sock -v ${PWD}/:/workdir mrsk'
|
||||||
|
```
|
||||||
|
|
||||||
|
Then, inside your app directory, run `mrsk init` (or `mrsk init --bundle` within Rails apps where you want a bin/mrsk binstub). Now edit the new file `config/deploy.yml`. It could look as simple as this:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
service: hey
|
service: hey
|
||||||
@@ -34,7 +46,7 @@ mrsk deploy
|
|||||||
This will:
|
This will:
|
||||||
|
|
||||||
1. Connect to the servers over SSH (using root by default, authenticated by your ssh key)
|
1. Connect to the servers over SSH (using root by default, authenticated by your ssh key)
|
||||||
2. Install Docker on any server that might be missing it (using apt-get)
|
2. Install Docker on any server that might be missing it (using apt-get): root access is needed via ssh for this.
|
||||||
3. Log into the registry both locally and remotely
|
3. Log into the registry both locally and remotely
|
||||||
4. Build the image using the standard Dockerfile in the root of the application.
|
4. Build the image using the standard Dockerfile in the root of the application.
|
||||||
5. Push the image to the registry.
|
5. Push the image to the registry.
|
||||||
|
|||||||
Reference in New Issue
Block a user