Class: Recipes::DatabaseContainer
- Inherits:
-
Rails::AppBuilder
- Object
- Rails::AppBuilder
- Recipes::DatabaseContainer
- Defined in:
- lib/potassium/recipes/database_container.rb
Constant Summary collapse
- CONTAINER_VARS =
{ postgresql: { port: 5432, user: 'postgres' }, mysql: { port: 3306, user: 'root' } }
- POSTGRESQL_SERVICE =
"image: postgres:\#{Potassium::POSTGRES_VERSION}\nports:\n - \#{CONTAINER_VARS[:postgresql][:port]}\nenvironment:\n POSTGRES_USER: \#{CONTAINER_VARS[:postgresql][:user]}\n POSTGRES_PASSWORD: ''\nvolumes:\n - postgresql_data:/var/lib/postgresql/data\n"- MYSQL_SERVICE =
"image: \"mysql:\#{Potassium::MYSQL_VERSION}\"\nports:\n - \#{CONTAINER_VARS[:mysql][:port]}\nenvironment:\n MYSQL_ALLOW_EMPTY_PASSWORD: 'true'\nvolumes:\n - mysql_data:/var/lib/mysql\n"
Instance Method Summary collapse
Instance Method Details
#create ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/potassium/recipes/database_container.rb', line 30 def create db_type = get(:database) return if [:None, :none].include? db_type.to_sym copy_file '../assets/docker-compose.yml', 'docker-compose.yml' compose = DockerHelpers.new('docker-compose.yml') compose.add_service(db_type.to_s, self.class.const_get("#{db_type}_service".upcase)) compose.add_volume("#{db_type}_data") template '../assets/Makefile.erb', 'Makefile' run "docker-compose up -d" set_env(db_type, CONTAINER_VARS[db_type][:port], CONTAINER_VARS[db_type][:user]) set_dot_env(db_type, CONTAINER_VARS[db_type][:port], CONTAINER_VARS[db_type][:user]) end |
#install ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/potassium/recipes/database_container.rb', line 47 def install database_config = YAML.safe_load(IO.read('config/database.yml'), [], [], true) database = database_config['development']['adapter'].gsub(/\d+/, '').to_sym set :database, database template "../assets/config/database_#{database}.yml.erb", 'config/database.yml' setup_text = # setup file is templated on project creation, manual install is needed " # Set up required services\n docker-compose up -d\n\n TEXT\n\n insert_into_file 'bin/setup', setup_text, before: \"# Set up database\"\n create\n run 'bin/setup'\n info \"A new container with a \#{get(:database)} database has been created.\"\nend\n" |
#installed? ⇒ Boolean
67 68 69 |
# File 'lib/potassium/recipes/database_container.rb', line 67 def installed? file_exist?("docker-compose.yml") end |