dockerが起動してnginx、mysqlなどのサービスを開始する方法

2388 ワード

dockerでsupervisorを使用してnginx、mysqlなどのプロセスを構成して自動的に起動します
文書ディレクトリ
  • dockerでsupervisorを使用してnginx、mysqlなどのプロセスを構成し、
  • を自動的に起動します.
  • 1.問題の説明
  • 2.解決策
  • 3.具体的な解決策
  • (1)supervisorではnginx,mysqlなどの自動再起動
  • を構成する.
  • (2)docker実行コンテナCMDコマンドsupervisor
  • を起動
  • (3)docker execコマンドsupervisordサービス開始時にwarning
  • が表示されます.
    1.問題の説明
    (1)docker    nginx,mysql   docker        ;
    
    (2)  update-rc.d             ;
    
    (3)dockerfile ,  mysql     mysql    ,      :
            "The command '/bin/sh -c usermod -d /var/lib/mysql mysql && /usr/sbin/nginx -c /etc/nginx/nginx.conf && /usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf' returned a non-zero code: 1"
         service mysql restart        
        (mysql      )
        
    (4)         ,CMD    msyql  :
            docker exec -it screen /usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf
              :/usr/sbin/mysqld: error while loading shared libraries: libaio.so.1: cannot stat shared object: Permission denied
                google       
        nginx  CMD    ,               nginx,  pass
    

    2.解決の考え方
            CMD          ,          nginx,mysql         。
    
      ,       supervisor,  supervisor      nginx,mysql 。
    

    3.具体的な解決策
    (1)supervisorでnginx,mysqlなどの自動再起動を設定する
    注意!注意!注意!
    すべてのsupervisorが管理するプロセスはバックグラウンドモードを開くことができません.例えば、「service nginx start」のように、フロントモードで構成するしかありません.そうしないと、サービスはずっと再起動します.
    プロファイルは一般的に/etc/supervisor/conf.d/に書かれ、ファイルの内容は以下の通りです.
    nginxプロファイル:
    [program:nginx]
    command=/usr/sbin/nginx -g 'daemon off;'
    autostart=true
    autorestart=true
    user=root
    
    

    mysqlプロファイル:
    [program:mysql]
    command=/usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf
    autostart=true
    autorestart=true
    user=root
    

    redisプロファイル(redis.confのdaemonをnoに変更し、redisバックグラウンドモードをオフにします):
    [program:redisd]
    command=/usr/local/redis/bin/redis-server
    priority=1001
    autostart=true
    startretries=3
    autorestart=true
    user=root
    

    (2)docker実行容器CMDコマンドsupervisor起動
    docker exec -it screen /usr/bin/supervisord -c /etc/supervisor/supervisord.conf
    

    (3)docker execコマンドsupervisordサービス開始時にwarningが現れる
    Unlinking stale socket /var/run/supervisor/supervisor.sock
    

    ソリューション:
    unlink /var/run/supervisor/supervisor.sock