ruby - How to use Capistrano with Rails and Docker-compose? -
i'm deploying rails application capistrano. doesn't have problem in way nginx , passenger.
now, move use docker-compose.
capfile
# load dsl , set stages require "capistrano/setup" require "capistrano/deploy" dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r }
deploy.rb
namespace :deploy desc "docker compose task" task docker_compose: :updated on roles(:web, :app), in: :groups, limit: 3, wait: 10 within release_path execute "cd #{release_path} && docker-compose --build -d" end end end after 'deploy:updated', 'deploy:docker_compose' end
docker-compose.yml
version: '2' services: db: image: mysql/mysql-server:5.7 environment: - mysql_root_password=myapp12345 redis: image: 'redis:3.2-alpine' command: redis-server ports: - '6379:6379' volumes: - 'redis:/var/lib/redis/data' website: depends_on: - 'redis' - 'db' build: . image: namle/myapp_api ports: - '3001:3000' volumes: - '.:/myapp_ruby' environment: - redis_url=redis://redis env_file: - '.env' sidekiq: depends_on: - 'redis' - 'db' build: . command: bundle exec sidekiq environment: - redis_url=redis://redis volumes: - '.:/myapp_ruby' env_file: - '.env' nginx-proxy: image: jwilder/nginx-proxy container_name: nginx-proxy ports: - 80:80 volumes: - /var/run/docker.sock:/tmp/docker.sock:ro volumes: redis: website: sidekiq: nginx-proxy:
it runs okay.
but have problem
docker-compose create new network groups, volumes, images, containers after deploy because of release_path
changed.
how fix it?
don't use capistrano docker. capistrano designed repeatedly deploy application existing server, while docker designed bundle application container deployed.
i don't use docker, can't give instructions, in nutshell, add dockerfile project, run docker build
(or that), , deploy resulting container server.
docker compose (if understand correctly) way of assembling set of existing containers. need have application container created before docker compose run , other containers create server environment.
Comments
Post a Comment