96 lines
2.2 KiB
Markdown
96 lines
2.2 KiB
Markdown
## Compose sample application
|
|
### Rails application in dev mode
|
|
|
|
Project structure:
|
|
```
|
|
.
|
|
├── app
|
|
├── docker-compose.yml
|
|
├── Dockerfile
|
|
├── Gemfile
|
|
├── othres dir and files
|
|
```
|
|
|
|
[_docker-compose.yml_](docker-compose.yml)
|
|
```
|
|
version: '3.7'
|
|
services:
|
|
db:
|
|
image: postgres
|
|
volumes:
|
|
- ./tmp/db:/var/lib/postgresql/data
|
|
...
|
|
web:
|
|
build: ./web
|
|
volumes:
|
|
- .:/myapp
|
|
ports:
|
|
- "3000:3000"
|
|
...
|
|
```
|
|
|
|
## Deploy with docker-compose
|
|
|
|
```
|
|
$ docker-compose up -d
|
|
Creating network "ruby_on_rails-postgres_default" with the default driver
|
|
Building web
|
|
Step 1/14 : FROM ruby:2.6.5
|
|
2.6.5: Pulling from library/ruby
|
|
...
|
|
Creating ruby_on_rails-postgres_db_1_a0b42e5fc001 ... done
|
|
Creating ruby_on_rails-postgres_web_1_3da9a09cebff ... done
|
|
```
|
|
|
|
## Expected result
|
|
|
|
Listing containers must show two containers running and the port mapping as below:
|
|
```
|
|
$ docker ps
|
|
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
|
dac525a7e7f9 ruby_on_rails-postgres_web "entrypoint.sh bash …" 49 seconds ago Up 42 seconds 0.0.0.0:3000->3000/tcp ruby_on_rails-postgres_web_1_cfc51eb65add
|
|
760e6b3dc241 postgres "docker-entrypoint.s…" 55 seconds ago Up 49 seconds 5432/tcp ruby_on_rails-postgres_db_1_85be421b80ec
|
|
```
|
|
|
|
After the application starts, navigate to `http://localhost:3000` in your web browser, `it may take about 5 seconds`
|
|
|
|
## Use docker rails with bash
|
|
|
|
```
|
|
$ docker-compose exec web bash
|
|
root@dac525a7e7f9:/myapp#
|
|
```
|
|
|
|
## Scripts to database
|
|
|
|
**create database:**
|
|
```
|
|
rake db:create
|
|
```
|
|
|
|
**migrations database:**
|
|
```
|
|
rake db:migrate
|
|
```
|
|
|
|
**drop database:**
|
|
```
|
|
rake db:drop
|
|
```
|
|
|
|
```
|
|
root@dac525a7e7f9:/myapp# rake db:create db:migrate
|
|
```
|
|
|
|
## Stop and remove the containers
|
|
```
|
|
root@dac525a7e7f9:/myapp# exit
|
|
exit
|
|
$ docker-compose down
|
|
Stopping ruby_on_rails-postgres_web_1_43d10612c395 ... done
|
|
Stopping ruby_on_rails-postgres_db_1_13519c5de2a7 ... done
|
|
Removing ruby_on_rails-postgres_web_1_43d10612c395 ... done
|
|
Removing ruby_on_rails-postgres_db_1_13519c5de2a7 ... done
|
|
Removing network ruby_on_rails-postgres_default
|
|
```
|