on_container 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +65 -1
- data/lib/on_container/dev/active_record_ops.rb +1 -9
- data/lib/on_container/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 49a6b84a56344cf0119b822fd9f12277bb66fe70
|
4
|
+
data.tar.gz: 6676d161e20a802d3f75c765e04bfd6b0969972c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9aa5a059a7ba11f6f658c08d32ead851ab667ad3c894f5442cd795febc3c8e6c9e65f1e8d126708a6a2a0702d18661e043a600768522caadc8cf90ae119f0c90
|
7
|
+
data.tar.gz: 6916cb665fa674c90a43634f2cf5bce4632c105c862f44caf8b08200b486440f305fc9f2ca01af4220ba59e87ef15b43969072b900e0c198f290c336ff341580
|
data/README.md
CHANGED
@@ -22,7 +22,71 @@ Or install it yourself as:
|
|
22
22
|
|
23
23
|
## Usage
|
24
24
|
|
25
|
-
|
25
|
+
### Development Routines & Docker Entrypoint Scripts
|
26
|
+
|
27
|
+
We use some routines included in this gem to create compelling development entrypoint scripts for docker development containers.
|
28
|
+
|
29
|
+
In this example, we'll be using the `on_container/dev/rails` routine bundle to create our dev entrypoint:
|
30
|
+
|
31
|
+
```ruby
|
32
|
+
#!/usr/bin/env ruby
|
33
|
+
|
34
|
+
# frozen_string_literal: true
|
35
|
+
|
36
|
+
require 'on_container/dev/rails'
|
37
|
+
|
38
|
+
set_given_or_default_command
|
39
|
+
|
40
|
+
# `on_setup_lock_acquired` prevents multiple app containers from running
|
41
|
+
# the setup process concurrently:
|
42
|
+
on_setup_lock_acquired do
|
43
|
+
ensure_project_gems_are_installed
|
44
|
+
ensure_project_node_packages_are_installed
|
45
|
+
|
46
|
+
wait_for_service_to_accept_connections 'tcp://postgres:5432'
|
47
|
+
setup_activerecord_database unless activerecord_database_ready?
|
48
|
+
|
49
|
+
remove_rails_pidfile if rails_server?
|
50
|
+
end if command_requires_setup?
|
51
|
+
|
52
|
+
execute_given_or_default_command
|
53
|
+
```
|
54
|
+
|
55
|
+
### Loading secrets into environment variables, and inserting credentials into URL environment variables
|
56
|
+
|
57
|
+
When using Docker Swarm, the secrets are loaded as files mounted into the container's filesystem.
|
58
|
+
|
59
|
+
The `on_container/load_env_secrets` runs a couple of routines that reads these files into environment variables.
|
60
|
+
|
61
|
+
For our Rails example app, we added the following line to the `config/boot.rb` file:
|
62
|
+
|
63
|
+
```ruby
|
64
|
+
# frozen_string_literal: true
|
65
|
+
|
66
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
|
67
|
+
|
68
|
+
require 'on_container/load_env_secrets' # Load secrets injected by Kubernetes/Swarm
|
69
|
+
|
70
|
+
require 'bundler/setup' # Set up gems listed in the Gemfile.
|
71
|
+
require 'bootsnap/setup' # Speed up boot time by caching expensive operations.
|
72
|
+
```
|
73
|
+
|
74
|
+
The `on_container/load_env_secrets` also merges any credential available in environment variables into any matching
|
75
|
+
`_URL` environment variable. For example, consider the following environment variables:
|
76
|
+
|
77
|
+
```shell
|
78
|
+
DATABASE_URL=postgres://postgres:5432/?encoding=unicode
|
79
|
+
DATABASE_USER=postgres
|
80
|
+
DATABASE_PASS=3x4mpl3P455w0rd
|
81
|
+
```
|
82
|
+
|
83
|
+
The routine will merge `DATABASE_USER` and `DATABASE_PASS` into `DATABASE_URL`:
|
84
|
+
|
85
|
+
```ruby
|
86
|
+
puts ENV['DATABASE_URL']
|
87
|
+
> postgres://postgres:3x4mpl3P455w0rd@postgres:5432/?encoding=unicode
|
88
|
+
```
|
89
|
+
|
26
90
|
|
27
91
|
## Development
|
28
92
|
|
@@ -26,15 +26,7 @@ module OnContainer
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def establish_activerecord_database_connection
|
29
|
-
unless defined?(ActiveRecord)
|
30
|
-
require 'rubygems'
|
31
|
-
require 'bundler'
|
32
|
-
|
33
|
-
Bundler.setup(:default)
|
34
|
-
|
35
|
-
require 'active_record'
|
36
|
-
end
|
37
|
-
|
29
|
+
require 'active_record' unless defined?(ActiveRecord)
|
38
30
|
ActiveRecord::Base.establish_connection activerecord_config
|
39
31
|
ActiveRecord::Base.connection_pool.with_connection { |connection| }
|
40
32
|
end
|
data/lib/on_container/version.rb
CHANGED