mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2025-01-29 18:52:22 +01:00
196 lines
6.2 KiB
Markdown
196 lines
6.2 KiB
Markdown
|
|
## Docker
|
|
|
|
Docker is an application deployment software.
|
|
|
|
## PREPARE HOST COREOS
|
|
Install VPS WITH Version coreOS STABLE (Ex : on DigitalOcean)
|
|
|
|
### Creating Swap File in CoreOS
|
|
|
|
Firstly, switch to sudo and create swap file
|
|
```bash
|
|
sudo -i
|
|
touch /2GiB.swap
|
|
chattr +C /2GiB.swap
|
|
fallocate -l 2048m /2GiB.swap
|
|
chmod 600 /2GiB.swap
|
|
mkswap /2GiB.swap
|
|
```
|
|
|
|
Create file /etc/systemd/system/swap.service with
|
|
```bash
|
|
[Unit]
|
|
Description=Turn on swap
|
|
[Service]
|
|
Type=oneshot
|
|
Environment="SWAPFILE=/2GiB.swap"
|
|
RemainAfterExit=true
|
|
ExecStartPre=/usr/sbin/losetup -f ${SWAPFILE}
|
|
ExecStart=/usr/bin/sh -c "/sbin/swapon $(/usr/sbin/losetup -j ${SWAPFILE} | /usr/bin/cut -d : -f 1)"
|
|
ExecStop=/usr/bin/sh -c "/sbin/swapoff $(/usr/sbin/losetup -j ${SWAPFILE} | /usr/bin/cut -d : -f 1)"
|
|
ExecStopPost=/usr/bin/sh -c "/usr/sbin/losetup -d $(/usr/sbin/losetup -j ${SWAPFILE} | /usr/bin/cut -d : -f 1)"
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
```
|
|
|
|
Then add service and start:
|
|
```bash
|
|
systemctl enable /etc/systemd/system/swap.service
|
|
systemctl start swap
|
|
exit
|
|
```
|
|
|
|
## PREPARE FOLDERS AND ENV CONFIG ON HOST
|
|
|
|
mkdir -p /home/core/fabmanager/config
|
|
MOVE docker/env.example to /home/core/fabmanager/config/env
|
|
CUSTOM ENV
|
|
mkdir -p /home/core/fabmanager/config/nginx
|
|
MOVE docker/nginx.conf.example to /home/core/fabmanager/config/nginx/fabmanager.conf
|
|
CUSTOM fabmanager.conf
|
|
|
|
IF SSL
|
|
mkdir -p /home/core/fabmanager/config/nginx/ssl
|
|
Move your crt and deprotected key
|
|
MOVE docker/nginx_with_ssl.conf.example to /home/core/fabmanager/config/nginx/fabmanager.conf
|
|
CUSTOM fabmanager.conf
|
|
|
|
|
|
## DEPLOY DOCKERS CONTAINERS ON HOST
|
|
|
|
|
|
```bash
|
|
docker pull redis:3.0
|
|
docker pull postgres:9.4
|
|
docker pull elasticsearch:1.7
|
|
docker pull sleede/fabmanager
|
|
|
|
docker run --restart=always -d --name=fabmanager-postgres -v /home/core/fabmanager/postgresql:/var/lib/postgresql/data postgres:9.4
|
|
docker run --restart=always -d --name=fabmanager-redis -v /home/core/fabmanager/redis:/data redis:3.0
|
|
docker run --restart=always -d --name=fabmanager-elastic -v /home/core/fabmanager/elasticsearch:/usr/share/elasticsearch/data elasticsearch:1.7
|
|
```
|
|
|
|
### DB CREATE
|
|
|
|
```bash
|
|
docker run --rm \
|
|
--link=fabmanager-postgres:postgres \
|
|
--link=fabmanager-redis:redis \
|
|
--link=fabmanager-elastic:elasticsearch \
|
|
-e RAILS_ENV=production \
|
|
--env-file /home/core/fabmanager/config/env \
|
|
sleede/fabmanager \
|
|
bundle exec rake db:create
|
|
```
|
|
|
|
### DB MIGRATE
|
|
|
|
```bash
|
|
docker run --rm \
|
|
--link=fabmanager-postgres:postgres \
|
|
--link=fabmanager-redis:redis \
|
|
--link=fabmanager-elastic:elasticsearch \
|
|
-e RAILS_ENV=production \
|
|
--env-file /home/core/fabmanager/config/env \
|
|
sleede/fabmanager \
|
|
bundle exec rake db:migrate
|
|
```
|
|
|
|
### DB SEED
|
|
|
|
```bash
|
|
docker run --rm \
|
|
--link=fabmanager-postgres:postgres \
|
|
--link=fabmanager-redis:redis \
|
|
--link=fabmanager-elastic:elasticsearch \
|
|
-e RAILS_ENV=production \
|
|
--env-file /home/core/fabmanager/config/env \
|
|
sleede/fabmanager \
|
|
bundle exec rake db:seed
|
|
```
|
|
|
|
|
|
### PREPARE ELASTIC
|
|
|
|
```bash
|
|
docker run --rm \
|
|
--link=fabmanager-postgres:postgres \
|
|
--link=fabmanager-postgres:postgres \
|
|
--link=fabmanager-redis:redis \
|
|
--link=fabmanager-elastic:elasticsearch \
|
|
-e RAILS_ENV=production \
|
|
--env-file /home/core/fabmanager/config/env \
|
|
sleede/fabmanager \
|
|
bundle exec rake fablab:es_build_stats
|
|
```
|
|
|
|
|
|
### recreate every versions of images
|
|
|
|
```bash
|
|
docker run --rm \
|
|
--link=fabmanager-postgres:postgres \
|
|
--link=fabmanager-redis:redis \
|
|
--link=fabmanager-elastic:elasticsearch \
|
|
-e RAILS_ENV=production \
|
|
--env-file /home/core/fabmanager/config/env \
|
|
-v /home/core/fabmanager/public/uploads:/usr/src/app/public/uploads \
|
|
sleede/fabmanager \
|
|
bundle exec rake fablab:build_images_versions
|
|
```
|
|
|
|
|
|
### BUILD ASSETS
|
|
|
|
```bash
|
|
docker run --rm \
|
|
--link=fabmanager-postgres:postgres \
|
|
--link=fabmanager-redis:redis \
|
|
--link=fabmanager-elastic:elasticsearch \
|
|
-e RAILS_ENV=production \
|
|
--env-file /home/core/fabmanager/config/env \
|
|
-v /home/core/fabmanager/public/assets:/usr/src/app/public/assets \
|
|
sleede/fabmanager \
|
|
bundle exec rake assets:precompile
|
|
|
|
docker run --rm -v /home/core/fabmanager/public/assets:/usr/src/app/public/assets sleede/fabmanager cp vendor/assets/components/select2/select2.png public/assets/select2.png
|
|
docker run --rm -v /home/core/fabmanager/public/assets:/usr/src/app/public/assets sleede/fabmanager cp vendor/assets/components/select2/select2x2.png public/assets/select2x2.png
|
|
docker run --rm -v /home/core/fabmanager/public/assets:/usr/src/app/public/assets sleede/fabmanager cp vendor/assets/components/select2/select2-spinner.gif public/assets/select2-spinner.gif
|
|
```
|
|
|
|
|
|
### RUN APP
|
|
|
|
```bash
|
|
docker run --restart=always -d --name=fabmanager \
|
|
-p 80:80 \
|
|
-p 443:443 \
|
|
--link=fabmanager-postgres:postgres \
|
|
--link=fabmanager-redis:redis \
|
|
--link=fabmanager-elastic:elasticsearch \
|
|
-e RAILS_ENV=production \
|
|
-e RACK_ENV=production \
|
|
--env-file /home/core/fabmanager/config/env \
|
|
-v /home/core/fabmanager/config/nginx:/etc/nginx/conf.d \
|
|
-v /home/core/fabmanager/public/assets:/usr/src/app/public/assets \
|
|
-v /home/core/fabmanager/public/uploads:/usr/src/app/public/uploads \
|
|
-v /home/core/fabmanager/invoices:/usr/src/app/invoices \
|
|
-v /home/core/fabmanager/log:/var/log/supervisor \
|
|
sleede/fabmanager
|
|
```
|
|
|
|
|
|
### for debug
|
|
|
|
```bash
|
|
docker run --rm -it \
|
|
--link=fabmanager-postgres:postgres \
|
|
--link=fabmanager-redis:redis \
|
|
--link=fabmanager-elastic:elasticsearch \
|
|
-e RAILS_ENV=production \
|
|
--env-file /home/core/fabmanager/config/env \
|
|
sleede/fabmanager \
|
|
bash
|
|
```
|