Skip to content

Instantly share code, notes, and snippets.

@dfop02
Created April 19, 2024 12:15
Show Gist options
  • Save dfop02/80d9f72cf7e05fbf2e2a9240867f4e5d to your computer and use it in GitHub Desktop.
Save dfop02/80d9f72cf7e05fbf2e2a9240867f4e5d to your computer and use it in GitHub Desktop.
Manage docker from Rails using rake
# Change "container_name" for the name of your app container created in docker-compose.yml
desc "Manage docker from rails"
namespace :docker do
desc "Docker build container"
task build: :environment do
system "docker-compose -f #{Rails.root.join('docker-compose.yml')} build"
end
desc "Docker up container"
task up: :environment do
system "docker-compose up"
end
desc "Docker build and up container"
task buildup: :environment do
Rake::Task['docker:build'].invoke
Rake::Task['docker:up'].invoke
end
desc "Open rails console on Docker container"
task console: :environment do
system "docker-compose run container_name rails c"
end
desc "Run rspec on container"
task rspec: :environment do
system "docker-compose run -e \"RAILS_ENV=test\" container_name rspec"
end
desc "Open a bash on Docker container for debug"
task bash: :environment do
system "docker-compose run --entrypoint=sh container_name"
end
desc "Install Docker"
task install: :environment do
installed = system "docker info --format '{{.OperatingSystem}}' | grep -q 'Docker Desktop'"
if installed
puts "Docker already installed."
else
puts "Installing Docker..."
system "brew install --cask docker"
puts "Installing Docker Compose..."
system "brew install docker-compose"
puts "Done!"
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment