on_container 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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