0

docker-compose を使用してリモート ホストにデプロイしています。これは私の設定がどのように見えるかです:

# stacks/web.yml
version: '2'

services:
  postgres:
    image: postgres:9.6
    restart: always
    volumes:
      - db:/var/lib/postgresql/data

  redis:
    image: redis:3.2.3
    restart: always

  web_server:
    depends_on: [postgres]
    build: ../sources/myapp
    links: [postgres]
    restart: always
    volumes:
      - nginx_socks:/tmp/socks
      - static_assets:/source/public

  sidekiq:
    depends_on: [postgres, redis]
    build: ../sources/myapp
    links: [postgres, redis]
    restart: always
    volumes:
      - static_assets:/source/public

  nginx:
    depends_on: [web_server]
    build: ../sources/nginx
    ports:
      - "80:80"
    volumes:
      - nginx_socks:/tmp/socks
      - static_assets:/public
    restart: always

volumes:
  db:
  nginx_socks:
  static_assets:

# stacks/web.production.yml
version: '2'

services:
  web_server:
    command: bundle exec puma -e production -b unix:///tmp/socks/puma.production.sock
    env_file: ../env/production.env

  sidekiq:
    command: bundle exec sidekiq -e production -c 2 -q default -q carrierwave
    env_file: ../env/production.env

  nginx:
    build:
      args:
        ENV_NAME: production
        DOMAIN: production.yavende.com

私は以下を使用して展開します:

eval $(docker-machine env myapp-production)`
docker-compose -f stacks/web.yml -f stacks/web.production.yml -p myapp_production build -no-deps web_server sidekiq
docker-compose -f stacks/web.yml -f stacks/web.production.yml -p myapp_production up -d

これはローカルで完全に機能し、過去にこの方法でデプロイを成功させましたが、「web_server」サービスを構築するときにハングし、最終的にこの問題で説明するようにタイムアウト エラーが表示されます。

この問題は、接続が遅い (アルゼンチン -> 米国の DigitalOcean サーバー) ことと、ハブでホストされているイメージを使用する代わりにイメージを作成してプッシュしようとしていることが原因であると思います。

構成設定をサーバーに複製し、docker-composeそこで直接実行することで、展開を行うことができました。

問題は、このプロセスを自動化するより良い方法はないかということです。その場でイメージを構築するために docker-compose を使用することをお勧めしますか?

ソースをサーバーに複製して何かを実行するこのプロセスを自動化することを考えていましたがdocker-compose、この問題を解決するためのより良いツールがあるかもしれません。

4

1 に答える 1