私はCapistranoでRailsアプリケーションを配備しています。 NginxとPassengerで通常どおり問題はありません。CapistranoをRailsとDockerで使用する方法を教えてください。
今、私はドッカーの作成を使用するように移動します。
Capfile
# Load DSL and set up stages
require "capistrano/setup"
require "capistrano/deploy"
Dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r }
deploy.rb
namespace :deploy do
desc "docker compose task"
task docker_compose: :updated do
on roles(:web, :app), in: :groups, limit: 3, wait: 10 do
within release_path do
execute "cd #{release_path} && docker-compose up --build -d"
end
end
end
after 'deploy:updated', 'deploy:docker_compose'
end
ドッキングウィンドウ-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:
それはOKAY実行されます。
は、しかし、私はrelease_path
のを変更したため、容器が後を展開、問題
ドッカー-コンが新しいネットワークグループ、ボリューム、イメージを作成します持っています。
修正方法?
ありがとうございます。 Docker-composeはDockerfileを実行してコンテナを生成するのに役立ちます。 DockerとCapistranoの違いがあります。 多くのフォルダで同じコンテナを実行するときにdocker-composeを設定することができればOKです。 – NamLe