27 stycznia 2022

Portainer #8 - Snibox

Trochę się namęczyłem, aby dostosować Snibox do wygodnej współpracy z Portainer. Domyślny sposób instalacji wymaga uruchomienia skryptu z consoli, a mi zależało na jednym pliku yaml, który da się wkleić do Portainer. Dodatkowo domyślny sposób uruchomienia utrudnia mapowanie dysku do dedykowanego miejsca. Plan nie udał się całkowicie, po uruchomieniu kontenerów musimy wydać jedną komendę w powłoce.

Portainer stack

version: '3'

services:
  frontend:
    container_name: snibox_nginx
    image: snibox/nginx-puma:1.15.9
    ports:
      - "8000:80"
    volumes:
      - static-files:/var/www/html
    depends_on:
      - backend

  backend:
    container_name: snibox_backend
    image: snibox/snibox:latest
    command: sh -c "rm -rf tmp/pids && ./bin/rails s -p 3000 -b '0.0.0.0'"
    environment:
      DB_NAME: postgres
      DB_USER: postgres
      DB_PASS:
      DB_HOST: database
      DB_PORT: 5432
      FORCE_SSL: "false"
      MAILGUN_SMTP_PORT: 587
      MAILGUN_SMTP_SERVER: smtp.mailgun.org
      MAILGUN_SMTP_PASSWORD:
      MAILGUN_API_KEY:
      MAILGUN_DOMAIN:
      MAILGUN_PUBLIC_KEY:
      SECRET_KEY_BASE: 
      62330c81dbeb1566d60027c45c00de3b320f17fba3a36431cc061128bac03cb9ea519614994f3ef8889b3e569a3a576b7aa88c83b4914366d561ef55248cdba1
    volumes:
      - static-files:/app/public
    depends_on:
      - database

  database:
    container_name: snibox_database
    image: postgres:10.7-alpine
    volumes:
      - pg-data:/var/lib/postgresql/data

volumes:
  pg-data:
    driver: local
    name: snibox_db_data
  static-files:
    driver: local
    name: snibox_static_files

Inicjalizacja aplikacji

docker exec snibox_backend ./bin/rake db:create
docker exec snibox_backend ./bin/rake db:migrate

[EDIT] Jedna komenda

Jeśli zmienimy wywołanie command w yaml, możemy uzyskać zamierzony efekt

command: ./bin/rake db:create && ./bin/rake db:migrate && sh -c "rm -rf tmp/pids && ./bin/rails s -p 3000 -b '0.0.0.0'"

Linki