- 投稿日:2019-06-25T23:35:46+09:00
[AWS ECS]Fargateのcontainerにシェルで入りたい(sshd無しで!)
[AWS ECS]Fargateのcontainerにシェルで入りたい(sshd無しで!)
ecsのFargateいいですね。コンテナ単位でcpuとかメモリとか指定する必要はあれど、elastic beanstalkや ec2ベースのecsクラスタのようにec2を意識せずにクラスタ組めるのはともていい感じだと思います。
・・・が、ec2を意識しない故に、困ったときのsshアクセスができません。これはトラブルシュート時や開発初期はとても困ります。
かといって、docker containerにsshの口を開けるのもなんとも負けた感がします。Fargateいいけど、docker execできたらなーと思っていましたが、そんなことはみんなが思っていることのようで、
下記のようなissueが数年前から立っておりました。How to run "docker exec... " command in ECS
すると最近(2019/5/8)
「SSMつかったら、Fargateコンテナのシェルにアクセスできたよ」
というコメントが出てきました!! (参考: https://github.com/aws/containers-roadmap/issues/187#issuecomment-490347856)
セッションマネージャーでawsコンソール(やaws-cli)から、シェルアクセスできるのは知っていたのですが、ec2が見えないfargateに関しては無理だろうと思い込んでいたのですが、読んでみるとできるようです。
これは来た!!とおもい試してみたところ、いろいろ使いづらいところはありつつも成功したのでメモ代わりに残しておきます。
セッションマネージャー
AWS System managerの セッションマネージャーに関しては下記の記事を参照ください。
SSH不要時代がくるか!?AWS Systems Manager セッションマネージャーがリリースされました!
簡単にいうと、awsのコンソールや、cliの環境から、特定のaws内のec2にシェルアクセスができる、というものです。
インスタンスIDなどが必要なことから、実際に見えるEC2でないとできないのかな?と思いこんでいたのですが、上記のissueのコメントを見てみるとどうもそうではないらしかったので試してみます。
手順
Fargate自体の仕組みや、設定に関するところ全体を書くと、関係しない部分が多くなるため、必要な部分のみ抜粋します。
しくみの概要
詳細手順の前に、どのように(EC2の見えない)Fargateコンテナに対して設定するのかの概要です。
前提:セッションマネージャーには、aws内のec2以外でも、 AWSのコンソールから System Managerにアクティベーション処理を行い、
amazon-ssm-agent
を起動しておくことで、 任意の環境のホストをSystem Managerから セッションマネージャーの機能を使える用に登録できる。
- これを踏まえて、事前にアクティベーションを登録しておいて、
Activation Code
とActivatoin Id
を取得(これらに関しては後述)しておく- Fargateで動くコンテナのビルド時にDockerfileで、
amazon-ssm-agent
をインストールしておく。- Fargetでコンテナが起動する際に、 上記「1.」の
Activation Code
、Activation Id
を使って、自分のコンテナを System Managerに登録する、かつ、amazon-ssm-agent
を引数なしで起動する。これで、セッションマネージャーにFargateのコンテナが登録されてシェルを起動できるようになります。
しくみの詳細
Sysetem Managerにアクティベーション登録をする
AWS System Manager -> アクティベーションから「アクティベーションの作成」を実行する
「インスタンス制限」 というのがあり、一つのアクティベーションに対して、最大何個のホストを登録できるかの設定項目があります。
dockerで運用する場合、コンテナが起動する度に違うホスト扱いになり、コンテナを起動するたびに「登録できる残りコンテナ数」が減っていきます。コンテナ破棄時に、ここの登録済み数をクリアする事ができれば気にしなくても良さそうなのですが、ちょっと方法がわからず、知っている方がいたら教えてほしい(切実)
(また、やらしいことに、 managed ec2以外を対象にする場合、ここのアクティベーションと登録済みインスタンス数によって課金とかにも関わってくるらしく気にせず作りっぱなしとかにもできなさそう(あまり詳しく調べていない)なのがつらいところです)
このアクティベーションを行うことで、下記のような
Activation Code
とActivation ID
が生成されるのでメモします(一回しか出てこないので注意)エージェントのインストール
Fargateで動かすコンテナに
amazon-ssm-agent
をインストールする。上記のissueコメントにあるように、
https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-install-managed-linux.html
で、OS毎に agent のインストール方法がのっているので、これにしたがい Dockerfileに追記します。
今回自分の場合は ubuntu だったため、下記のようになります。Dockerfile
RUN curl https://s3.ap-northeast-1.amazonaws.com/amazon-ssm-ap-northeast-1/latest/debian_amd64/amazon-ssm-agent.deb -o /tmp/amazon-ssm-agent.deb \ && dpkg -i /tmp/amazon-ssm-agent.deb \ && cp /etc/amazon/ssm/seelog.xml.template /etc/amazon/ssm/seelog.xmlコンテナの登録と、セッションマネージャー用エージェントの起動
コンテナの登録
Fargateのコンテナ起動時に、上記アクティベーション時のコードと、IDでコンテナをSSMに登録します。
Fargateコンテナからアクセスする必要がある秘匿情報なので、最近使えるようになった、暗号化されたSSMのパラメータストアから取得するといいと思います。
詳細は、下記参照
【祝!】FargateでもECSにごっつ簡単に環境変数に機密情報を渡せるようになりました! | DevelopersIO
SSM_AGENT_CODE
、SSM_AGENT_ID
が、それぞれ上記で、メモしたActivation Code
とActivation ID
です。amazon-ssm-agent -register -code "${SSM_AGENT_CODE}" -id "${SSM_AGENT_ID}" -region "ap-northeast-1"エージェントの起動
セッションマネージャーからアクセスする際にエージェントが起動していないといけないのでバックグラウンドで起動しておきます。
この際、awsのドキュメントだと、サービスとして動かしているサンプルばかりなのですが、dockerコンテナなので、サービスいれるのもちょっとなと思って、単純にバックグラウンド起動にしています。 (supervisordとかで起動するのもいいかも)# agent 起動 amazon-ssm-agent &
これで、fargateのコンテナが正常に起動すれば準備OKです!
セッションマネージャーからのアクセス
System Managerのセッションマネージャーからセッションの開始を選択し、今登録されたインスタンスID(
amazon-ssm-agent -register
のログなどから確認してください)を指定します。セッション開始!
下記のようにシェルのセッションが開始されます。
この際ユーザが
ssm-user
というユーザになっているため、 docker containerが root で実行されているといろいろ実行できません。
(例えば、bin/rails console
など)sudo可能なユーザなので、 Dockerfileで
sudo
入れておいてsudoするのがいいと思います。
・・・が、その際、sudoで実行中のコマンドの環境変数は、Fargateで設定した環境変数が設定されていないため、sudo -E bin/rails cと、 sudo に、環境変数を保存する、
-E
をつけて実行すると実行できるようになります。この辺よくわかってないですが、コンテナ上で実行されているユーザはrootで、そこに対して環境変数が設定されているのですが、 セッションマネージャーで、ssm-userとして実行する際は、ssm-userの環境に環境変数が引き継がれているが、 sudoで実行するrootの環境変数には何も設定されていないようです。
掃除
料金体系とかあまり詳しくまだ調べられていないのですが マネージドなEC2に対してセッションマネージャーからアクセスするのと違い、少し違う設定が有効になるようです。
とりあえず、Fargateでこの設定を行う場合は、スポットでアクセスする場合に限り、一通り使った後は登録済みインスタンスや、アクティベーション等は手動で削除しています。
最後に
Fargateで唯一困ってたシェルアクセスに関して、結構安全そうな手段が見つかってよかったです。
ですが、やはり本来は、Fargateの機能としてシェルにアクセスしたい感じですよね。そんな中、つい最近出ていた、Fargateの責任者の方へのインタビューだそうですが、
AWSのコンテナ責任者が語るFargate、ECS、App Mesh、EKS、そしてKubernetes (1/2):AWS Summit Tokyo 2019で聞いた - @IT
また、FargateコンテナにSSHして、内部の情報を確認できるようにするなども予定している
まさにこの機能ですね!!!
早く実現してほしいものですが、それまではこういう方法も便利かも!という記事でした。
- 投稿日:2019-06-25T23:35:40+09:00
HerokuにDockerFileのイメージを使用してリリースする
はじめに
※学んだことアウトプット用です。
複数コンテナリリースや、DBとの連携までは書いていないです。メリット
dockerで開発することで環境依存問題を解決できる。
リリースもコンテナをプッシュするだけで簡単にできる。実際にリリースしてみよう
事前にherokuにログイン
heroku container:loginDockerFileのあるディレクトリで
heroku container:push webイメージがビルドされて、プッシュされる。
そのあと
Heroku container:release webこれでプッシュされたイメージが起動する
補足
Railsの場合はserver.pidがコンテナに取り込まれるとHeroku上で起動できなくなる
いちいちプッシュする際にサーバーを落とすのは面倒なので、対策を打つ。
対策として、.dockerignoreにserver.pidを登録することで、イメージに含まれなくなる
イメージに含まれなくなると無事にコンテナを起動することができる.dockerignorepids/server.pid
- 投稿日:2019-06-25T22:29:25+09:00
docker(26) Open jij導入失敗(3)
$ docker run -p 8888:8888 -it continuumio/anaconda3 /bin/bash (base) root@3a0e0ad78f9f:/# apt update; apt -y upgrade Ign:1 http://deb.debian.org/debian stretch InRelease Get:2 http://deb.debian.org/debian stretch-updates InRelease [91.0 kB] Hit:3 http://deb.debian.org/debian stretch Release Get:4 http://security.debian.org/debian-security stretch/updates InRelease [94.3 kB] Get:6 http://security.debian.org/debian-security stretch/updates/main amd64 Packages [499 kB] Fetched 684 kB in 0s (729 kB/s) Reading package lists... Done Building dependency tree Reading state information... Done All packages are up to date. Reading package lists... Done Building dependency tree Reading state information... Done Calculating upgrade... Done 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. (base) root@3a0e0ad78f9f:/# apt install -y vim git wget Reading package lists... Done Building dependency tree Reading state information... Done git is already the newest version (1:2.11.0-3+deb9u4). wget is already the newest version (1.18-5+deb9u3). The following additional packages will be installed: vim-common vim-runtime xxd Suggested packages: ctags vim-doc vim-scripts The following NEW packages will be installed: vim vim-common vim-runtime xxd 0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded. Need to get 6734 kB of archives. After this operation, 31.1 MB of additional disk space will be used. Get:1 http://security.debian.org/debian-security stretch/updates/main amd64 xxd amd64 2:8.0.0197-4+deb9u3 [132 kB] Get:2 http://security.debian.org/debian-security stretch/updates/main amd64 vim-common all 2:8.0.0197-4+deb9u3 [159 kB] Get:3 http://security.debian.org/debian-security stretch/updates/main amd64 vim-runtime all 2:8.0.0197-4+deb9u3 [5409 kB] Get:4 http://security.debian.org/debian-security stretch/updates/main amd64 vim amd64 2:8.0.0197-4+deb9u3 [1034 kB] Fetched 6734 kB in 1s (4891 kB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package xxd. (Reading database ... 12554 files and directories currently installed.) Preparing to unpack .../xxd_2%3a8.0.0197-4+deb9u3_amd64.deb ... Unpacking xxd (2:8.0.0197-4+deb9u3) ... Selecting previously unselected package vim-common. Preparing to unpack .../vim-common_2%3a8.0.0197-4+deb9u3_all.deb ... Unpacking vim-common (2:8.0.0197-4+deb9u3) ... Selecting previously unselected package vim-runtime. Preparing to unpack .../vim-runtime_2%3a8.0.0197-4+deb9u3_all.deb ... Adding 'diversion of /usr/share/vim/vim80/doc/help.txt to /usr/share/vim/vim80/doc/help.txt.vim-tiny by vim-runtime' Adding 'diversion of /usr/share/vim/vim80/doc/tags to /usr/share/vim/vim80/doc/tags.vim-tiny by vim-runtime' Unpacking vim-runtime (2:8.0.0197-4+deb9u3) ... Selecting previously unselected package vim. Preparing to unpack .../vim_2%3a8.0.0197-4+deb9u3_amd64.deb ... Unpacking vim (2:8.0.0197-4+deb9u3) ... Processing triggers for mime-support (3.60) ... Setting up xxd (2:8.0.0197-4+deb9u3) ... Setting up vim-common (2:8.0.0197-4+deb9u3) ... Setting up vim-runtime (2:8.0.0197-4+deb9u3) ... Setting up vim (2:8.0.0197-4+deb9u3) ... update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/vim (vim) in auto mode update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/vimdiff (vimdiff) in auto mode update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/rvim (rvim) in auto mode update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/rview (rview) in auto mode update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/vi (vi) in auto mode update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/view (view) in auto mode update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/ex (ex) in auto mode update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/editor (editor) in auto mode (base) root@3a0e0ad78f9f:/# pip update ERROR: unknown command "update" (base) root@3a0e0ad78f9f:/# pip upgrade ERROR: unknown command "upgrade" (base) root@3a0e0ad78f9f:/# pip install --upgrade pip Collecting pip Downloading https://files.pythonhosted.org/packages/5c/e0/be401c003291b56efc55aeba6a80ab790d3d4cece2778288d65323009420/pip-19.1.1-py2.py3-none-any.whl (1.4MB) 100% |████████████████████████████████| 1.4MB 3.6MB/s Installing collected packages: pip Found existing installation: pip 19.0.3 Uninstalling pip-19.0.3: Successfully uninstalled pip-19.0.3 Successfully installed pip-19.1.1 (base) root@3a0e0ad78f9f:/# wget https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.sh --2019-06-25 13:25:05-- https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.sh Resolving github.com (github.com)... 52.69.186.44 Connecting to github.com (github.com)|52.69.186.44|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://github-production-release-asset-2e65be.s3.amazonaws.com/537699/ad7b7280-83a2-11e9-8514-7cba293bd456?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190625%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190625T132506Z&X-Amz-Expires=300&X-Amz-Signature=4d7a58b2e4cc6a27efeb5e5963542f7c823a62f0717636e640204a2f76d91e3a&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dcmake-3.14.5-Linux-x86_64.sh&response-content-type=application%2Foctet-stream [following] --2019-06-25 13:25:06-- https://github-production-release-asset-2e65be.s3.amazonaws.com/537699/ad7b7280-83a2-11e9-8514-7cba293bd456?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190625%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190625T132506Z&X-Amz-Expires=300&X-Amz-Signature=4d7a58b2e4cc6a27efeb5e5963542f7c823a62f0717636e640204a2f76d91e3a&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dcmake-3.14.5-Linux-x86_64.sh&response-content-type=application%2Foctet-stream Resolving github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)... 52.216.186.139 Connecting to github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)|52.216.186.139|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 37200120 (35M) [application/octet-stream] Saving to: ‘cmake-3.14.5-Linux-x86_64.sh’ cmake-3.14.5-Linux-x86_64.sh 100%[=================================================================================>] 35.48M 3.64MB/s in 10s 2019-06-25 13:25:17 (3.52 MB/s) - ‘cmake-3.14.5-Linux-x86_64.sh’ saved [37200120/37200120] (base) root@3a0e0ad78f9f:/# chmod +x cmake-3.14.5-Linux-x86_64.sh (base) root@3a0e0ad78f9f:/# ./cmake-3.14.5-Linux-x86_64.sh CMake Installer Version: 3.14.5, Copyright (c) Kitware This is a self-extracting archive. The archive will be extracted to: / If you want to stop extracting, please press <ctrl-C>. CMake - Cross Platform Makefile Generator Copyright 2000-2019 Kitware, Inc. and Contributors All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Kitware, Inc. nor the names of Contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ------------------------------------------------------------------------------ The following individuals and institutions are among the Contributors: * Aaron C. Meadows <cmake@shadowguarddev.com> * Adriaan de Groot <groot@kde.org> * Aleksey Avdeev <solo@altlinux.ru> * Alexander Neundorf <neundorf@kde.org> * Alexander Smorkalov <alexander.smorkalov@itseez.com> * Alexey Sokolov <sokolov@google.com> * Alex Merry <alex.merry@kde.org> * Alex Turbov <i.zaufi@gmail.com> * Andreas Pakulat <apaku@gmx.de> * Andreas Schneider <asn@cryptomilk.org> * André Rigland Brodtkorb <Andre.Brodtkorb@ifi.uio.no> * Axel Huebl, Helmholtz-Zentrum Dresden - Rossendorf * Benjamin Eikel * Bjoern Ricks <bjoern.ricks@gmail.com> * Brad Hards <bradh@kde.org> * Christopher Harvey * Christoph Grüninger <foss@grueninger.de> * Clement Creusot <creusot@cs.york.ac.uk> * Daniel Blezek <blezek@gmail.com> * Daniel Pfeifer <daniel@pfeifer-mail.de> * Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> * Eran Ifrah <eran.ifrah@gmail.com> * Esben Mose Hansen, Ange Optimization ApS * Geoffrey Viola <geoffrey.viola@asirobots.com> * Google Inc * Gregor Jasny * Helio Chissini de Castro <helio@kde.org> * Ilya Lavrenov <ilya.lavrenov@itseez.com> * Insight Software Consortium <insightsoftwareconsortium.org> * Jan Woetzel * Julien Schueller * Kelly Thompson <kgt@lanl.gov> * Laurent Montel <montel@kde.org> * Konstantin Podsvirov <konstantin@podsvirov.pro> * Mario Bensi <mbensi@ipsquad.net> * Martin Gräßlin <mgraesslin@kde.org> * Mathieu Malaterre <mathieu.malaterre@gmail.com> * Matthaeus G. Chajdas * Matthias Kretz <kretz@kde.org> * Matthias Maennich <matthias@maennich.net> * Michael Hirsch, Ph.D. <www.scivision.co> * Michael Stürmer * Miguel A. Figueroa-Villanueva * Mike Jackson * Mike McQuaid <mike@mikemcquaid.com> * Nicolas Bock <nicolasbock@gmail.com> * Nicolas Despres <nicolas.despres@gmail.com> * Nikita Krupen'ko <krnekit@gmail.com> * NVIDIA Corporation <www.nvidia.com> * OpenGamma Ltd. <opengamma.com> * Patrick Stotko <stotko@cs.uni-bonn.de> * Per Øyvind Karlsen <peroyvind@mandriva.org> * Peter Collingbourne <peter@pcc.me.uk> * Petr Gotthard <gotthard@honeywell.com> * Philip Lowman <philip@yhbt.com> * Philippe Proulx <pproulx@efficios.com> * Raffi Enficiaud, Max Planck Society * Raumfeld <raumfeld.com> * Roger Leigh <rleigh@codelibre.net> * Rolf Eike Beer <eike@sf-mail.de> * Roman Donchenko <roman.donchenko@itseez.com> * Roman Kharitonov <roman.kharitonov@itseez.com> * Ruslan Baratov * Sebastian Holtermann <sebholt@xwmw.org> * Stephen Kelly <steveire@gmail.com> * Sylvain Joubert <joubert.sy@gmail.com> * Thomas Sondergaard <ts@medical-insight.com> * Tobias Hunger <tobias.hunger@qt.io> * Todd Gamblin <tgamblin@llnl.gov> * Tristan Carel * University of Dundee * Vadim Zhukov * Will Dicharry <wdicharry@stellarscience.com> See version control history for details of individual contributions. The above copyright and license notice applies to distributions of CMake in source and binary form. Third-party software packages supplied with CMake under compatible licenses provide their own copyright notices documented in corresponding subdirectories or source files. ------------------------------------------------------------------------------ CMake was initially developed by Kitware with the following sponsorship: * National Library of Medicine at the National Institutes of Health as part of the Insight Segmentation and Registration Toolkit (ITK). * US National Labs (Los Alamos, Livermore, Sandia) ASC Parallel Visualization Initiative. * National Alliance for Medical Image Computing (NAMIC) is funded by the National Institutes of Health through the NIH Roadmap for Medical Research, Grant U54 EB005149. * Kitware, Inc. Do you accept the license? [yN]: y By default the CMake will be installed in: "//cmake-3.14.5-Linux-x86_64" Do you want to include the subdirectory cmake-3.14.5-Linux-x86_64? Saying no will install in: "/" [Yn]: y Using target directory: //cmake-3.14.5-Linux-x86_64 Extracting, please wait... Unpacking finished successfully (base) root@3a0e0ad78f9f:/# mv cmake-3.14.5-Linux-x86_64 /opt (base) root@3a0e0ad78f9f:/# ln -s /opt/cmake-3.14.5-Linux-x86_64/bin/* /usr/bin (base) root@3a0e0ad78f9f:/# cmake --version cmake version 3.14.5 CMake suite maintained and supported by Kitware (kitware.com/cmake). (base) root@3a0e0ad78f9f:/# pip install openjij Collecting openjij Downloading https://files.pythonhosted.org/packages/32/fc/f7e98f470e1098a7cd9379145978a0aa44c2d6e4efd7e8d6f096f2398192/openjij-0.0.7.tar.gz (80kB) |████████████████████████████████| 81kB 1.6MB/s Requirement already satisfied: numpy in /opt/conda/lib/python3.7/site-packages (from openjij) (1.16.2) Requirement already satisfied: requests in /opt/conda/lib/python3.7/site-packages (from openjij) (2.21.0) Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/lib/python3.7/site-packages (from requests->openjij) (2019.3.9) Requirement already satisfied: idna<2.9,>=2.5 in /opt/conda/lib/python3.7/site-packages (from requests->openjij) (2.8) Requirement already satisfied: urllib3<1.25,>=1.21.1 in /opt/conda/lib/python3.7/site-packages (from requests->openjij) (1.24.1) Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /opt/conda/lib/python3.7/site-packages (from requests->openjij) (3.0.4) Building wheels for collected packages: openjij Building wheel for openjij (setup.py) ... error ERROR: Complete output from command /opt/conda/bin/python -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-install-1r99cy0b/openjij/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-5p9fk6s8 --python-tag cp37: ERROR: running bdist_wheel running build running build_py creating build creating build/lib.linux-x86_64-3.7 creating build/lib.linux-x86_64-3.7/openjij copying openjij/__init__.py -> build/lib.linux-x86_64-3.7/openjij copying openjij/__version.py -> build/lib.linux-x86_64-3.7/openjij copying openjij/utils.py -> build/lib.linux-x86_64-3.7/openjij creating build/lib.linux-x86_64-3.7/openjij/model copying openjij/model/model.py -> build/lib.linux-x86_64-3.7/openjij/model copying openjij/model/__init__.py -> build/lib.linux-x86_64-3.7/openjij/model copying openjij/model/chimera_model.py -> build/lib.linux-x86_64-3.7/openjij/model copying openjij/model/king_graph.py -> build/lib.linux-x86_64-3.7/openjij/model creating build/lib.linux-x86_64-3.7/openjij/sampler copying openjij/sampler/gpu_sampler.py -> build/lib.linux-x86_64-3.7/openjij/sampler copying openjij/sampler/__init__.py -> build/lib.linux-x86_64-3.7/openjij/sampler copying openjij/sampler/sampler.py -> build/lib.linux-x86_64-3.7/openjij/sampler copying openjij/sampler/response.py -> build/lib.linux-x86_64-3.7/openjij/sampler copying openjij/sampler/cmos_annealer.py -> build/lib.linux-x86_64-3.7/openjij/sampler running build_ext <__main__.CMakeExtension('cxxjij') at 0x7f112c511d68> cxxjij CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool. CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage -- Configuring incomplete, errors occurred! See also "/tmp/pip-install-1r99cy0b/openjij/build/temp.linux-x86_64-3.7/CMakeFiles/CMakeOutput.log". Traceback (most recent call last): File "<string>", line 1, in <module> File "/tmp/pip-install-1r99cy0b/openjij/setup.py", line 126, in <module> zip_safe=False File "/opt/conda/lib/python3.7/site-packages/setuptools/__init__.py", line 145, in setup return distutils.core.setup(**attrs) File "/opt/conda/lib/python3.7/distutils/core.py", line 148, in setup dist.run_commands() File "/opt/conda/lib/python3.7/distutils/dist.py", line 966, in run_commands self.run_command(cmd) File "/opt/conda/lib/python3.7/distutils/dist.py", line 985, in run_command cmd_obj.run() File "/opt/conda/lib/python3.7/site-packages/wheel/bdist_wheel.py", line 192, in run self.run_command('build') File "/opt/conda/lib/python3.7/distutils/cmd.py", line 313, in run_command self.distribution.run_command(command) File "/opt/conda/lib/python3.7/distutils/dist.py", line 985, in run_command cmd_obj.run() File "/opt/conda/lib/python3.7/distutils/command/build.py", line 135, in run self.run_command(cmd_name) File "/opt/conda/lib/python3.7/distutils/cmd.py", line 313, in run_command self.distribution.run_command(command) File "/opt/conda/lib/python3.7/distutils/dist.py", line 985, in run_command cmd_obj.run() File "/tmp/pip-install-1r99cy0b/openjij/setup.py", line 42, in run self.build_extension(ext) File "/tmp/pip-install-1r99cy0b/openjij/setup.py", line 69, in build_extension subprocess.check_call(['cmake', ext.sourcedir] + cmake_kwargs, cwd=self.build_temp, env=env) File "/opt/conda/lib/python3.7/subprocess.py", line 347, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['cmake', '/tmp/pip-install-1r99cy0b/openjij', '-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/tmp/pip-install-1r99cy0b/openjij/build/lib.linux-x86_64-3.7', '-DPYTHON_EXECUTABLE=/opt/conda/bin/python', '-DCMAKE_BUILD_TYPE=Release']' returned non-zero exit status 1. ---------------------------------------- ERROR: Failed building wheel for openjij Running setup.py clean for openjij Failed to build openjij Installing collected packages: openjij Running setup.py install for openjij ... error ERROR: Complete output from command /opt/conda/bin/python -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-install-1r99cy0b/openjij/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-395yudmz/install-record.txt --single-version-externally-managed --compile: ERROR: running install running build running build_py creating build creating build/lib.linux-x86_64-3.7 creating build/lib.linux-x86_64-3.7/openjij copying openjij/__init__.py -> build/lib.linux-x86_64-3.7/openjij copying openjij/__version.py -> build/lib.linux-x86_64-3.7/openjij copying openjij/utils.py -> build/lib.linux-x86_64-3.7/openjij creating build/lib.linux-x86_64-3.7/openjij/model copying openjij/model/model.py -> build/lib.linux-x86_64-3.7/openjij/model copying openjij/model/__init__.py -> build/lib.linux-x86_64-3.7/openjij/model copying openjij/model/chimera_model.py -> build/lib.linux-x86_64-3.7/openjij/model copying openjij/model/king_graph.py -> build/lib.linux-x86_64-3.7/openjij/model creating build/lib.linux-x86_64-3.7/openjij/sampler copying openjij/sampler/gpu_sampler.py -> build/lib.linux-x86_64-3.7/openjij/sampler copying openjij/sampler/__init__.py -> build/lib.linux-x86_64-3.7/openjij/sampler copying openjij/sampler/sampler.py -> build/lib.linux-x86_64-3.7/openjij/sampler copying openjij/sampler/response.py -> build/lib.linux-x86_64-3.7/openjij/sampler copying openjij/sampler/cmos_annealer.py -> build/lib.linux-x86_64-3.7/openjij/sampler running build_ext <__main__.CMakeExtension('cxxjij') at 0x7f57b7965da0> cxxjij CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool. CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage -- Configuring incomplete, errors occurred! See also "/tmp/pip-install-1r99cy0b/openjij/build/temp.linux-x86_64-3.7/CMakeFiles/CMakeOutput.log". Traceback (most recent call last): File "<string>", line 1, in <module> File "/tmp/pip-install-1r99cy0b/openjij/setup.py", line 126, in <module> zip_safe=False File "/opt/conda/lib/python3.7/site-packages/setuptools/__init__.py", line 145, in setup return distutils.core.setup(**attrs) File "/opt/conda/lib/python3.7/distutils/core.py", line 148, in setup dist.run_commands() File "/opt/conda/lib/python3.7/distutils/dist.py", line 966, in run_commands self.run_command(cmd) File "/opt/conda/lib/python3.7/distutils/dist.py", line 985, in run_command cmd_obj.run() File "/opt/conda/lib/python3.7/site-packages/setuptools/command/install.py", line 61, in run return orig.install.run(self) File "/opt/conda/lib/python3.7/distutils/command/install.py", line 545, in run self.run_command('build') File "/opt/conda/lib/python3.7/distutils/cmd.py", line 313, in run_command self.distribution.run_command(command) File "/opt/conda/lib/python3.7/distutils/dist.py", line 985, in run_command cmd_obj.run() File "/opt/conda/lib/python3.7/distutils/command/build.py", line 135, in run self.run_command(cmd_name) File "/opt/conda/lib/python3.7/distutils/cmd.py", line 313, in run_command self.distribution.run_command(command) File "/opt/conda/lib/python3.7/distutils/dist.py", line 985, in run_command cmd_obj.run() File "/tmp/pip-install-1r99cy0b/openjij/setup.py", line 42, in run self.build_extension(ext) File "/tmp/pip-install-1r99cy0b/openjij/setup.py", line 69, in build_extension subprocess.check_call(['cmake', ext.sourcedir] + cmake_kwargs, cwd=self.build_temp, env=env) File "/opt/conda/lib/python3.7/subprocess.py", line 347, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['cmake', '/tmp/pip-install-1r99cy0b/openjij', '-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/tmp/pip-install-1r99cy0b/openjij/build/lib.linux-x86_64-3.7', '-DPYTHON_EXECUTABLE=/opt/conda/bin/python', '-DCMAKE_BUILD_TYPE=Release']' returned non-zero exit status 1. ---------------------------------------- ERROR: Command "/opt/conda/bin/python -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-install-1r99cy0b/openjij/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-395yudmz/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-install-1r99cy0b/openjij/
- 投稿日:2019-06-25T21:29:40+09:00
Rails x Docker環境にテストDBを構築する
Docker上でRailsアプリを開発するにあたり、テスト用のDBと開発用DBをそれぞれ構築する必要があったのでそのときの構築手順を記載。
前提
以下のようなDockerファイルでRailsアプリケーションを構築しているとする。
DockerfileFROM ruby:2.6 RUN apt-get update -qq && apt-get install -y nodejs RUN mkdir /myapp WORKDIR /myapp COPY Gemfile /myapp/Gemfile COPY Gemfile.lock /myapp/Gemfile.lock RUN bundle install COPY . /myapp # Start the main process. CMD ["rails", "server", "-b", "0.0.0.0"]RailsアプリケーションのDB設定を以下のようになっているとする。
database.ymldefault: &default adapter: mysql2 encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: <%= ENV.fetch('DB_USERNAME', 'root') %> password: <%= ENV.fetch('DB_PASSWORD', 'pass') %> development: <<: *default host: db database: myapp_development test: <<: *default host: test-db database: myapp_test production: <<: *default database: myapp_productionDockerの設定方法
DBのコンテナ名はdatabase.ymlで設定したhostと一緒にする。
今回の場合、開発用DBのdockerコンテナは'db', テスト用DBのdockerコンテナは'test-db'とする。
MYSQL_USERとMYSQL_PASSWORDはdatabase.ymlで設定したユーザー名とパスワードと一致させる必要がある。
MYSQL_ROOT_PASSWORDはroot用パスワード。設定が必須。
MYSQL_DATABASEはdatabase.ymlで設定したdatabaseと一緒にする。
docker-compose.ymlversion: '3' services: web: build: . env_file: development.env ports: - '3001:3000' volumes: - .:/myapp depends_on: - db - test-db db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: 'pass' MYSQL_USER: 'webapp' MYSQL_PASSWORD: 'test' MYSQL_DATABASE: myapp_development ports: - '3306:3306' test-db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: 'pass' MYSQL_USER: 'webapp' MYSQL_PASSWORD: 'test' MYSQL_DATABASE: myapp_test ports: - '3307:3306' # ローカルPCから接続するために設定docker-compose.ymlに直接記述してもいいけど、環境変数は外出ししておく。
今回は、webappというユーザーがtestというパスワードでDBに接続できるような設定にする。↓development.envDB_USERNAME=webapp DB_PASSWORD=test接続確認
webのコンテナ名がdocker-rails_web_1という名前で立ち上がっている前提。
$ docker exec -it $(docker ps -f name=docker-rails_web_1 -q) /bin/bash [docker] # rails c -e test irb(main):001:0> ENV['RAILS_ENV'] => "test" [docker] # rails c irb(main):001:0> ENV['RAILS_ENV'] => "development"
- 投稿日:2019-06-25T20:35:40+09:00
コンテナでC言語の開発環境を構築する
この記事について
C言語の開発環境には様々な依存ライブラリをインストールする必要があります。そのため開発者それぞれの環境を統一するのが大変です。これまで環境を統一するためには、
- 開発者全員が同じマシンの開発環境を使って開発
- 開発環境構築手順書を作成し、配布する
- 開発環境のVMイメージを配布する
のような面倒なことをする必要がありました。
でも、今はコンテナという便利な物があります。
筆者もこれまでAWSのEC2上に開発&試験環境を作り、開発者へ提供していました。現在はDockerfileやDockerイメージを提供しています。ここではDockerfileとイメージの作成し、その利用方法を説明します。前提
Docker for Mac/Windowsなど,Dockerコンテナが動作する環境がインストール済みである事。あと、ほんの少しDockerやLinuxの知識が必要です。
尚、この記事ではmac上での作業内容を記載しています。Windowsで作業する場合はパス等、適宜読み替えてください。ゴール
この記事では、DockerコンテナのCentOS上で次の事ができるようになります。
- viでC言語のソースが書ける
- gcc,makeを使って、C言語のプログラムがコンパイルできる
- コンパイル済みの実行ファイルが実行できる
- コンパイル済みの実行ファイルがgdbでデバッグできる
- (おまけ)java,pythonも使える
Dokerfile作成
dokerファイルはコンテナイメージを作るための設計図です。
コンテナを使う以前は、OSやライブラリ等のインストールを手作業で行っていました。その手順をメモする替わりにDockerfileに書いておけば、簡単に再現できます。
これぞまさしく Infrastructure as Code(IaC) の第一歩ですね。まずイメージを作る場所を決める
まず、イメージを作る場所を決めます。そこにDockerfileを作成/配置します。
> cd ~/docker/Dockerfile
完成版はこちら(Dockerfile)から
Dockerfileにいろいろ記載してきます。ベースイメージ
好きなOSを選んでください。
ここでは開発環境としてCentOS 7を選びます。From centos:7ワーキングディレクトリ
インストール作業するディレクトリを指定します。
WORKDIR /rootモジュールのインスール
yum で好きなパッケージをインストールしてください。
C言語で開発するなら、yumのgroupinstallが便利です。イメージが大きくなりますが、開発環境なら問題ないでしょう。RUN yum -y update && \ yum -y groupinstall "Development Tools"その他はご自由に!
こちら(Dockerfile)には、普通に使いそうなものを記載しています。イメージへファイルの取り込み
ホストPCのファイルシステムからイメージ内へファイルを取り込みます。
COPY .bashrc /root/今回はshell実行時に環境変数が設定された状態にしたいので、.bashrcをイメージに追加しています。
必要なファイルがあったら
COPY [ホストPCのファイル] [Dockerイメージ内の位置]
で追加してください。Dockerイメージ作成
Dockerファイルのあるディレクトリ(ここでは ~/docker/)に移動してビルドします。
> cd ~/docker/ > docker build -t c_dev_env .ちょっと時間がかかります。
> docker images REPOSITORY TAG IMAGE ID CREATED SIZE c_dev_env latest aa8cc7f4372f About an hour ago 1.45GB
これでDockerイメージ「c_dev_env」の完成です。
参考
DockerHubに登録(push)するためには、タグ(-tオプション)に[organization]を付加する必要があります。
docker build -t [organization]/c_dev_env .
Dockerコンテナ実行
この記事で一番重要な内容部分です。gdbコマンドがシステムコールを使用しているため、適切なオプションを付けないと実行できません。
docker run -it --name "my_dev_env" --cap-add=SYS_PTRACE --security-opt="seccomp=unconfined" c_dev_env /bin/bash
オプション、パラメタの説明
オプション/パラメタ 説明 -i (--interactive)stdinを使用する -t ttyを有効にする --name 名前をつける。ここでは"my_dev_env" --cap-add=SYS_PTRACE Linux Capability ptrace()システムコールを許可。 (参考)Man page of Capabilities --security-opt="seccomp=unconfined" seccompという仕組みでもシステムコールが制限されているため、それを回避。(参考)seccompプロファイルを使ってdockerのシステムコールを制御 パラメタ1 イメージ名。ここでは c_dev_env を指定 パラメタ2 実行コマンド。ここでは/bin/bash を指定 -v [ホストPCのディレクトリ]:[コンテナのディレクトリ] で、マウントしておくと便利です。ホストPCの慣れたエディタで開発できます。
> docker run -it --name "my_dev_env" --cap-add=SYS_PTRACE --security-opt="seccomp=unconfined" c_dev /bin/bash bash-4.2# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) bash-4.2#これで実行環境が完成しました。
プログラム作成&実行
それでは簡単なプログラムを作って、実行してみましょう。
Dockerイメージ内 /root/sampleの下へbash-4.2# cd /root bash-4.2# mkdir sample bash-4.2# cd sample bash-4.2# vi hello.cプログラム作成 hello.c
hello.c#include <stdio.h> int main(void) { int sum = 0; sum++; printf("Hello, World!\n"); printf("sum = %d\n", sum ); return 0; }そしてコンパイル
gcc -g -o hello hello.c
-g:デバッグオプションを忘れずに!bash-4.2# gcc -g -o hello hello.c bash-4.2# ls -la total 24 drwxr-xr-x 2 root root 4096 Jun 23 14:24 . dr-xr-x--- 1 root root 4096 Jun 23 14:23 .. -rwxr-xr-x 1 root root 9528 Jun 23 14:24 hello -rw-r--r-- 1 root root 136 Jun 23 14:24 hello.c bash-4.2# ./hello Hello, World! sum = 1ちゃんと実行できています。
デバッグ
今度は、gdbでデバッグしてみましょう
bash-4.2# gdb hello GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-114.el7 〜 省略 〜 For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>... Reading symbols from /root/sample/hello...done. (gdb)エラーもなくプロンプトが出てきました。
続いて、ブレークポイント設定&ステップ実行(gdb) l <---リスト表示 1 #include <stdio.h> 2 3 int main(void) 4 { 5 int sum = 0; 6 sum++; 7 printf("Hello, World!\n"); 8 printf("sum = %d\n", sum ); 9 return 0; 10 } (gdb) b 6 <---6行目にブレークポイント設定 Breakpoint 1 at 0x40056c: file hello.c, line 6. (gdb) r <---実行 Starting program: /root/sample/hello Breakpoint 1, main () at hello.c:6 6 sum++; <---ブレークポイントで止まった! Missing separate debuginfos, use: debuginfo-install glibc-2.17-260.el7_6.5.x86_64 (gdb) n <---ステップ実行 7 printf("Hello, World!\n"); (gdb) p sum <---変数内容表示 $2 = 1ブレークポイント設定、ステップ実行問題なくできています。
Dockerコンテナから抜ける
最後に、DockerコンテナのLinuxから抜けるには Ctrl+p ,Ctrl+qです。
もう一度つなぐ時は、docker attach [タグ名]
> docker attach my_dev_env bash-4.2#
まとめ
Infrastructure as Code(IaC) は大規模システムの環境構築、特にパブリッククラウドやコンテナオーケストレーション環境では必須の技術要素です。しかし、こんな身近な環境でも体感できる事に、少し感動しました。(当たり前なのですが)
- インストール手順書をDockerfileで書く
- 環境構築手順書をPlaybookに書く
これもInfrastructure as Code(IaC)の重要な要素であり、これだけでもトイル(
SRE サイトリライアビリティエンジニアリング 5章)を確実に減らすとことができる気がします。ただし、Dockerfile職人とPlaybook職人による属人化には気をつけて。
- 投稿日:2019-06-25T20:26:24+09:00
dockerにmake
Open jij導入失敗
https://qiita.com/kaizen_nagoya/items/11cb393d5b8ce9019cd6Open jij導入失敗(2)
https://qiita.com/kaizen_nagoya/items/aa483a07608f8c3563bccmake versin 11以上が必要らしい。
# apt install cmake # cmake --version cmake version 3.10.2そこで、次の資料を参考にさせていただいた。
Linuxに特定のバージョンのcmakeをインストール
https://qiita.com/pollenjp/items/391afc3e9f93006b83ba# apt remove cmake Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: cmake-data krb5-locales libarchive13 libcurl4 libgssapi-krb5-2 libjsoncpp1 libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 liblzo2-2 libnghttp2-14 libpsl5 librhash0 librtmp1 libuv1 multiarch-support publicsuffix Use 'apt autoremove' to remove them. The following packages will be REMOVED: cmake 0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. After this operation, 17.3 MB disk space will be freed. Do you want to continue? [Y/n] y (Reading database ... 17342 files and directories currently installed.) Removing cmake (3.10.2-1ubuntu2) ... root@02b32b9272ce:/# apt install wget Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: cmake-data krb5-locales libarchive13 libcurl4 libgssapi-krb5-2 libjsoncpp1 libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 liblzo2-2 libnghttp2-14 librhash0 librtmp1 libuv1 multiarch-support Use 'apt autoremove' to remove them. The following NEW packages will be installed: wget 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 316 kB of archives. After this operation, 954 kB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 wget amd64 1.19.4-1ubuntu2.2 [316 kB] Fetched 316 kB in 2s (158 kB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package wget. (Reading database ... 17329 files and directories currently installed.) Preparing to unpack .../wget_1.19.4-1ubuntu2.2_amd64.deb ... Unpacking wget (1.19.4-1ubuntu2.2) ... Setting up wget (1.19.4-1ubuntu2.2) ... root@02b32b9272ce:/# wget https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.sh --2019-06-25 11:08:07-- https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.sh Resolving github.com (github.com)... 52.69.186.44 Connecting to github.com (github.com)|52.69.186.44|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://github-production-release-asset-2e65be.s3.amazonaws.com/537699/ad7b7280-83a2-11e9-8514-7cba293bd456?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190625%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190625T110807Z&X-Amz-Expires=300&X-Amz-Signature=dfa677a917823087e2a2257d71f6cda5cfe5df234477e03f452a185ee69f64ca&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dcmake-3.14.5-Linux-x86_64.sh&response-content-type=application%2Foctet-stream [following] --2019-06-25 11:08:08-- https://github-production-release-asset-2e65be.s3.amazonaws.com/537699/ad7b7280-83a2-11e9-8514-7cba293bd456?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190625%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190625T110807Z&X-Amz-Expires=300&X-Amz-Signature=dfa677a917823087e2a2257d71f6cda5cfe5df234477e03f452a185ee69f64ca&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dcmake-3.14.5-Linux-x86_64.sh&response-content-type=application%2Foctet-stream Resolving github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)... 52.216.177.91 Connecting to github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)|52.216.177.91|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 37200120 (35M) [application/octet-stream] Saving to: 'cmake-3.14.5-Linux-x86_64.sh' cmake-3.14.5-Linux-x86_ 100%[============================>] 35.48M 4.21MB/s in 8.3s 2019-06-25 11:08:17 (4.29 MB/s) - 'cmake-3.14.5-Linux-x86_64.sh' saved [37200120/37200120] root@02b32b9272ce:/# wget https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.tar.gz --2019-06-25 11:08:30-- https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.tar.gz Resolving github.com (github.com)... 52.69.186.44 Connecting to github.com (github.com)|52.69.186.44|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://github-production-release-asset-2e65be.s3.amazonaws.com/537699/a94f5500-83a2-11e9-8429-3ec560052352?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190625%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190625T110830Z&X-Amz-Expires=300&X-Amz-Signature=ff23e72dacc51245d203c0ed44ef0669bb18666d37624ee231c38dd054094be9&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dcmake-3.14.5-Linux-x86_64.tar.gz&response-content-type=application%2Foctet-stream [following] --2019-06-25 11:08:30-- https://github-production-release-asset-2e65be.s3.amazonaws.com/537699/a94f5500-83a2-11e9-8429-3ec560052352?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190625%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190625T110830Z&X-Amz-Expires=300&X-Amz-Signature=ff23e72dacc51245d203c0ed44ef0669bb18666d37624ee231c38dd054094be9&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dcmake-3.14.5-Linux-x86_64.tar.gz&response-content-type=application%2Foctet-stream Resolving github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)... 52.216.161.211 Connecting to github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)|52.216.161.211|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 37191648 (35M) [application/octet-stream] Saving to: 'cmake-3.14.5-Linux-x86_64.tar.gz' cmake-3.14.5-Linux-x86_ 100%[============================>] 35.47M 5.26MB/s in 7.7s 2019-06-25 11:08:40 (4.62 MB/s) - 'cmake-3.14.5-Linux-x86_64.tar.gz' saved [37191648/37191648] root@02b32b9272ce:/# ls *.sh cmake-3.14.5-Linux-x86_64.sh root@02b32b9272ce:/# ls -al *.sh -rw-r--r-- 1 root root 37200120 May 31 16:50 cmake-3.14.5-Linux-x86_64.sh root@02b32b9272ce:/# chmod +x cmake-3.14.5-Linux-x86_64.sh root@02b32b9272ce:/# ./cmake-3.14.5-Linux-x86_64.sh CMake Installer Version: 3.14.5, Copyright (c) Kitware This is a self-extracting archive. The archive will be extracted to: / If you want to stop extracting, please press <ctrl-C>. CMake - Cross Platform Makefile Generator Copyright 2000-2019 Kitware, Inc. and Contributors All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Kitware, Inc. nor the names of Contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ------------------------------------------------------------------------------ The following individuals and institutions are among the Contributors: * Aaron C. Meadows <cmake@shadowguarddev.com> * Adriaan de Groot <groot@kde.org> * Aleksey Avdeev <solo@altlinux.ru> * Alexander Neundorf <neundorf@kde.org> * Alexander Smorkalov <alexander.smorkalov@itseez.com> * Alexey Sokolov <sokolov@google.com> * Alex Merry <alex.merry@kde.org> * Alex Turbov <i.zaufi@gmail.com> * Andreas Pakulat <apaku@gmx.de> * Andreas Schneider <asn@cryptomilk.org> * André Rigland Brodtkorb <Andre.Brodtkorb@ifi.uio.no> * Axel Huebl, Helmholtz-Zentrum Dresden - Rossendorf * Benjamin Eikel * Bjoern Ricks <bjoern.ricks@gmail.com> * Brad Hards <bradh@kde.org> * Christopher Harvey * Christoph Grüninger <foss@grueninger.de> * Clement Creusot <creusot@cs.york.ac.uk> * Daniel Blezek <blezek@gmail.com> * Daniel Pfeifer <daniel@pfeifer-mail.de> * Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> * Eran Ifrah <eran.ifrah@gmail.com> * Esben Mose Hansen, Ange Optimization ApS * Geoffrey Viola <geoffrey.viola@asirobots.com> * Google Inc * Gregor Jasny * Helio Chissini de Castro <helio@kde.org> * Ilya Lavrenov <ilya.lavrenov@itseez.com> * Insight Software Consortium <insightsoftwareconsortium.org> * Jan Woetzel * Julien Schueller * Kelly Thompson <kgt@lanl.gov> * Laurent Montel <montel@kde.org> * Konstantin Podsvirov <konstantin@podsvirov.pro> * Mario Bensi <mbensi@ipsquad.net> * Martin Gräßlin <mgraesslin@kde.org> * Mathieu Malaterre <mathieu.malaterre@gmail.com> * Matthaeus G. Chajdas * Matthias Kretz <kretz@kde.org> * Matthias Maennich <matthias@maennich.net> * Michael Hirsch, Ph.D. <www.scivision.co> * Michael Stürmer * Miguel A. Figueroa-Villanueva * Mike Jackson * Mike McQuaid <mike@mikemcquaid.com> * Nicolas Bock <nicolasbock@gmail.com> * Nicolas Despres <nicolas.despres@gmail.com> * Nikita Krupen'ko <krnekit@gmail.com> * NVIDIA Corporation <www.nvidia.com> * OpenGamma Ltd. <opengamma.com> * Patrick Stotko <stotko@cs.uni-bonn.de> * Per Øyvind Karlsen <peroyvind@mandriva.org> * Peter Collingbourne <peter@pcc.me.uk> * Petr Gotthard <gotthard@honeywell.com> * Philip Lowman <philip@yhbt.com> * Philippe Proulx <pproulx@efficios.com> * Raffi Enficiaud, Max Planck Society * Raumfeld <raumfeld.com> * Roger Leigh <rleigh@codelibre.net> * Rolf Eike Beer <eike@sf-mail.de> * Roman Donchenko <roman.donchenko@itseez.com> * Roman Kharitonov <roman.kharitonov@itseez.com> * Ruslan Baratov * Sebastian Holtermann <sebholt@xwmw.org> * Stephen Kelly <steveire@gmail.com> * Sylvain Joubert <joubert.sy@gmail.com> * Thomas Sondergaard <ts@medical-insight.com> * Tobias Hunger <tobias.hunger@qt.io> * Todd Gamblin <tgamblin@llnl.gov> * Tristan Carel * University of Dundee * Vadim Zhukov * Will Dicharry <wdicharry@stellarscience.com> See version control history for details of individual contributions. The above copyright and license notice applies to distributions of CMake in source and binary form. Third-party software packages supplied with CMake under compatible licenses provide their own copyright notices documented in corresponding subdirectories or source files. ------------------------------------------------------------------------------ CMake was initially developed by Kitware with the following sponsorship: * National Library of Medicine at the National Institutes of Health as part of the Insight Segmentation and Registration Toolkit (ITK). * US National Labs (Los Alamos, Livermore, Sandia) ASC Parallel Visualization Initiative. * National Alliance for Medical Image Computing (NAMIC) is funded by the National Institutes of Health through the NIH Roadmap for Medical Research, Grant U54 EB005149. * Kitware, Inc. Do you accept the license? [yN]: y By default the CMake will be installed in: "//cmake-3.14.5-Linux-x86_64" Do you want to include the subdirectory cmake-3.14.5-Linux-x86_64? Saying no will install in: "/" [Yn]: y Using target directory: //cmake-3.14.5-Linux-x86_64 Extracting, please wait... Unpacking finished successfully root@02b32b9272ce:/# ls bin cmake-3.14.5-Linux-x86_64.tar.gz lib opt sbin usr boot dev lib64 proc srv var cmake-3.14.5-Linux-x86_64 etc media root sys cmake-3.14.5-Linux-x86_64.sh home mnt run tmp root@02b32b9272ce:/# pwd / root@02b32b9272ce:/# mv cmake-3.14.5-Linux-x86_64 /opt root@02b32b9272ce:/# ln -s /opt/cmake-3.14.5-Linux-x86_64/bin/* /usr/bin root@02b32b9272ce:/# cmake --version cmake version 3.14.5 CMake suite maintained and supported by Kitware (kitware.com/cmake).
- 投稿日:2019-06-25T20:26:24+09:00
dockerにcmake
Open jij導入失敗
https://qiita.com/kaizen_nagoya/items/11cb393d5b8ce9019cd6Open jij導入失敗(2)
https://qiita.com/kaizen_nagoya/items/aa483a07608f8c3563bccmake versin 11以上が必要らしい。
# apt install cmake # cmake --version cmake version 3.10.2そこで、次の資料を参考にさせていただいた。
Linuxに特定のバージョンのcmakeをインストール
https://qiita.com/pollenjp/items/391afc3e9f93006b83ba# apt remove cmake Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: cmake-data krb5-locales libarchive13 libcurl4 libgssapi-krb5-2 libjsoncpp1 libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 liblzo2-2 libnghttp2-14 libpsl5 librhash0 librtmp1 libuv1 multiarch-support publicsuffix Use 'apt autoremove' to remove them. The following packages will be REMOVED: cmake 0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. After this operation, 17.3 MB disk space will be freed. Do you want to continue? [Y/n] y (Reading database ... 17342 files and directories currently installed.) Removing cmake (3.10.2-1ubuntu2) ... root@02b32b9272ce:/# apt install wget Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: cmake-data krb5-locales libarchive13 libcurl4 libgssapi-krb5-2 libjsoncpp1 libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 liblzo2-2 libnghttp2-14 librhash0 librtmp1 libuv1 multiarch-support Use 'apt autoremove' to remove them. The following NEW packages will be installed: wget 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 316 kB of archives. After this operation, 954 kB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 wget amd64 1.19.4-1ubuntu2.2 [316 kB] Fetched 316 kB in 2s (158 kB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package wget. (Reading database ... 17329 files and directories currently installed.) Preparing to unpack .../wget_1.19.4-1ubuntu2.2_amd64.deb ... Unpacking wget (1.19.4-1ubuntu2.2) ... Setting up wget (1.19.4-1ubuntu2.2) ... root@02b32b9272ce:/# wget https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.sh --2019-06-25 11:08:07-- https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.sh Resolving github.com (github.com)... 52.69.186.44 Connecting to github.com (github.com)|52.69.186.44|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://github-production-release-asset-2e65be.s3.amazonaws.com/537699/ad7b7280-83a2-11e9-8514-7cba293bd456?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190625%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190625T110807Z&X-Amz-Expires=300&X-Amz-Signature=dfa677a917823087e2a2257d71f6cda5cfe5df234477e03f452a185ee69f64ca&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dcmake-3.14.5-Linux-x86_64.sh&response-content-type=application%2Foctet-stream [following] --2019-06-25 11:08:08-- https://github-production-release-asset-2e65be.s3.amazonaws.com/537699/ad7b7280-83a2-11e9-8514-7cba293bd456?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190625%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190625T110807Z&X-Amz-Expires=300&X-Amz-Signature=dfa677a917823087e2a2257d71f6cda5cfe5df234477e03f452a185ee69f64ca&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dcmake-3.14.5-Linux-x86_64.sh&response-content-type=application%2Foctet-stream Resolving github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)... 52.216.177.91 Connecting to github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)|52.216.177.91|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 37200120 (35M) [application/octet-stream] Saving to: 'cmake-3.14.5-Linux-x86_64.sh' cmake-3.14.5-Linux-x86_ 100%[============================>] 35.48M 4.21MB/s in 8.3s 2019-06-25 11:08:17 (4.29 MB/s) - 'cmake-3.14.5-Linux-x86_64.sh' saved [37200120/37200120] root@02b32b9272ce:/# wget https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.tar.gz --2019-06-25 11:08:30-- https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.tar.gz Resolving github.com (github.com)... 52.69.186.44 Connecting to github.com (github.com)|52.69.186.44|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://github-production-release-asset-2e65be.s3.amazonaws.com/537699/a94f5500-83a2-11e9-8429-3ec560052352?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190625%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190625T110830Z&X-Amz-Expires=300&X-Amz-Signature=ff23e72dacc51245d203c0ed44ef0669bb18666d37624ee231c38dd054094be9&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dcmake-3.14.5-Linux-x86_64.tar.gz&response-content-type=application%2Foctet-stream [following] --2019-06-25 11:08:30-- https://github-production-release-asset-2e65be.s3.amazonaws.com/537699/a94f5500-83a2-11e9-8429-3ec560052352?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190625%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190625T110830Z&X-Amz-Expires=300&X-Amz-Signature=ff23e72dacc51245d203c0ed44ef0669bb18666d37624ee231c38dd054094be9&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dcmake-3.14.5-Linux-x86_64.tar.gz&response-content-type=application%2Foctet-stream Resolving github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)... 52.216.161.211 Connecting to github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)|52.216.161.211|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 37191648 (35M) [application/octet-stream] Saving to: 'cmake-3.14.5-Linux-x86_64.tar.gz' cmake-3.14.5-Linux-x86_ 100%[============================>] 35.47M 5.26MB/s in 7.7s 2019-06-25 11:08:40 (4.62 MB/s) - 'cmake-3.14.5-Linux-x86_64.tar.gz' saved [37191648/37191648] root@02b32b9272ce:/# ls *.sh cmake-3.14.5-Linux-x86_64.sh root@02b32b9272ce:/# ls -al *.sh -rw-r--r-- 1 root root 37200120 May 31 16:50 cmake-3.14.5-Linux-x86_64.sh root@02b32b9272ce:/# chmod +x cmake-3.14.5-Linux-x86_64.sh root@02b32b9272ce:/# ./cmake-3.14.5-Linux-x86_64.sh CMake Installer Version: 3.14.5, Copyright (c) Kitware This is a self-extracting archive. The archive will be extracted to: / If you want to stop extracting, please press <ctrl-C>. CMake - Cross Platform Makefile Generator Copyright 2000-2019 Kitware, Inc. and Contributors All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Kitware, Inc. nor the names of Contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ------------------------------------------------------------------------------ The following individuals and institutions are among the Contributors: * Aaron C. Meadows <cmake@shadowguarddev.com> * Adriaan de Groot <groot@kde.org> * Aleksey Avdeev <solo@altlinux.ru> * Alexander Neundorf <neundorf@kde.org> * Alexander Smorkalov <alexander.smorkalov@itseez.com> * Alexey Sokolov <sokolov@google.com> * Alex Merry <alex.merry@kde.org> * Alex Turbov <i.zaufi@gmail.com> * Andreas Pakulat <apaku@gmx.de> * Andreas Schneider <asn@cryptomilk.org> * André Rigland Brodtkorb <Andre.Brodtkorb@ifi.uio.no> * Axel Huebl, Helmholtz-Zentrum Dresden - Rossendorf * Benjamin Eikel * Bjoern Ricks <bjoern.ricks@gmail.com> * Brad Hards <bradh@kde.org> * Christopher Harvey * Christoph Grüninger <foss@grueninger.de> * Clement Creusot <creusot@cs.york.ac.uk> * Daniel Blezek <blezek@gmail.com> * Daniel Pfeifer <daniel@pfeifer-mail.de> * Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> * Eran Ifrah <eran.ifrah@gmail.com> * Esben Mose Hansen, Ange Optimization ApS * Geoffrey Viola <geoffrey.viola@asirobots.com> * Google Inc * Gregor Jasny * Helio Chissini de Castro <helio@kde.org> * Ilya Lavrenov <ilya.lavrenov@itseez.com> * Insight Software Consortium <insightsoftwareconsortium.org> * Jan Woetzel * Julien Schueller * Kelly Thompson <kgt@lanl.gov> * Laurent Montel <montel@kde.org> * Konstantin Podsvirov <konstantin@podsvirov.pro> * Mario Bensi <mbensi@ipsquad.net> * Martin Gräßlin <mgraesslin@kde.org> * Mathieu Malaterre <mathieu.malaterre@gmail.com> * Matthaeus G. Chajdas * Matthias Kretz <kretz@kde.org> * Matthias Maennich <matthias@maennich.net> * Michael Hirsch, Ph.D. <www.scivision.co> * Michael Stürmer * Miguel A. Figueroa-Villanueva * Mike Jackson * Mike McQuaid <mike@mikemcquaid.com> * Nicolas Bock <nicolasbock@gmail.com> * Nicolas Despres <nicolas.despres@gmail.com> * Nikita Krupen'ko <krnekit@gmail.com> * NVIDIA Corporation <www.nvidia.com> * OpenGamma Ltd. <opengamma.com> * Patrick Stotko <stotko@cs.uni-bonn.de> * Per Øyvind Karlsen <peroyvind@mandriva.org> * Peter Collingbourne <peter@pcc.me.uk> * Petr Gotthard <gotthard@honeywell.com> * Philip Lowman <philip@yhbt.com> * Philippe Proulx <pproulx@efficios.com> * Raffi Enficiaud, Max Planck Society * Raumfeld <raumfeld.com> * Roger Leigh <rleigh@codelibre.net> * Rolf Eike Beer <eike@sf-mail.de> * Roman Donchenko <roman.donchenko@itseez.com> * Roman Kharitonov <roman.kharitonov@itseez.com> * Ruslan Baratov * Sebastian Holtermann <sebholt@xwmw.org> * Stephen Kelly <steveire@gmail.com> * Sylvain Joubert <joubert.sy@gmail.com> * Thomas Sondergaard <ts@medical-insight.com> * Tobias Hunger <tobias.hunger@qt.io> * Todd Gamblin <tgamblin@llnl.gov> * Tristan Carel * University of Dundee * Vadim Zhukov * Will Dicharry <wdicharry@stellarscience.com> See version control history for details of individual contributions. The above copyright and license notice applies to distributions of CMake in source and binary form. Third-party software packages supplied with CMake under compatible licenses provide their own copyright notices documented in corresponding subdirectories or source files. ------------------------------------------------------------------------------ CMake was initially developed by Kitware with the following sponsorship: * National Library of Medicine at the National Institutes of Health as part of the Insight Segmentation and Registration Toolkit (ITK). * US National Labs (Los Alamos, Livermore, Sandia) ASC Parallel Visualization Initiative. * National Alliance for Medical Image Computing (NAMIC) is funded by the National Institutes of Health through the NIH Roadmap for Medical Research, Grant U54 EB005149. * Kitware, Inc. Do you accept the license? [yN]: y By default the CMake will be installed in: "//cmake-3.14.5-Linux-x86_64" Do you want to include the subdirectory cmake-3.14.5-Linux-x86_64? Saying no will install in: "/" [Yn]: y Using target directory: //cmake-3.14.5-Linux-x86_64 Extracting, please wait... Unpacking finished successfully root@02b32b9272ce:/# ls bin cmake-3.14.5-Linux-x86_64.tar.gz lib opt sbin usr boot dev lib64 proc srv var cmake-3.14.5-Linux-x86_64 etc media root sys cmake-3.14.5-Linux-x86_64.sh home mnt run tmp root@02b32b9272ce:/# pwd / root@02b32b9272ce:/# mv cmake-3.14.5-Linux-x86_64 /opt root@02b32b9272ce:/# ln -s /opt/cmake-3.14.5-Linux-x86_64/bin/* /usr/bin root@02b32b9272ce:/# cmake --version cmake version 3.14.5 CMake suite maintained and supported by Kitware (kitware.com/cmake).Open jij導入失敗
https://qiita.com/kaizen_nagoya/items/11cb393d5b8ce9019cd6Open jij導入失敗(2)
https://qiita.com/kaizen_nagoya/items/aa483a07608f8c3563bcOpenJij チュートリアル
https://openjij.github.io/OpenJijTutorial/_build/html/ja/index.html
- 投稿日:2019-06-25T20:26:24+09:00
docker(25) dockerにcmake
Open jij導入失敗
https://qiita.com/kaizen_nagoya/items/11cb393d5b8ce9019cd6Open jij導入失敗(2)
https://qiita.com/kaizen_nagoya/items/aa483a07608f8c3563bccmake versin 11以上が必要らしい。
# apt install cmake # cmake --version cmake version 3.10.2そこで、次の資料を参考にさせていただいた。
Linuxに特定のバージョンのcmakeをインストール
https://qiita.com/pollenjp/items/391afc3e9f93006b83ba# apt remove cmake Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: cmake-data krb5-locales libarchive13 libcurl4 libgssapi-krb5-2 libjsoncpp1 libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 liblzo2-2 libnghttp2-14 libpsl5 librhash0 librtmp1 libuv1 multiarch-support publicsuffix Use 'apt autoremove' to remove them. The following packages will be REMOVED: cmake 0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. After this operation, 17.3 MB disk space will be freed. Do you want to continue? [Y/n] y (Reading database ... 17342 files and directories currently installed.) Removing cmake (3.10.2-1ubuntu2) ... root@02b32b9272ce:/# apt install wget Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: cmake-data krb5-locales libarchive13 libcurl4 libgssapi-krb5-2 libjsoncpp1 libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 liblzo2-2 libnghttp2-14 librhash0 librtmp1 libuv1 multiarch-support Use 'apt autoremove' to remove them. The following NEW packages will be installed: wget 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 316 kB of archives. After this operation, 954 kB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 wget amd64 1.19.4-1ubuntu2.2 [316 kB] Fetched 316 kB in 2s (158 kB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package wget. (Reading database ... 17329 files and directories currently installed.) Preparing to unpack .../wget_1.19.4-1ubuntu2.2_amd64.deb ... Unpacking wget (1.19.4-1ubuntu2.2) ... Setting up wget (1.19.4-1ubuntu2.2) ... root@02b32b9272ce:/# wget https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.sh --2019-06-25 11:08:07-- https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.sh Resolving github.com (github.com)... 52.69.186.44 Connecting to github.com (github.com)|52.69.186.44|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://github-production-release-asset-2e65be.s3.amazonaws.com/537699/ad7b7280-83a2-11e9-8514-7cba293bd456?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190625%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190625T110807Z&X-Amz-Expires=300&X-Amz-Signature=dfa677a917823087e2a2257d71f6cda5cfe5df234477e03f452a185ee69f64ca&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dcmake-3.14.5-Linux-x86_64.sh&response-content-type=application%2Foctet-stream [following] --2019-06-25 11:08:08-- https://github-production-release-asset-2e65be.s3.amazonaws.com/537699/ad7b7280-83a2-11e9-8514-7cba293bd456?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190625%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190625T110807Z&X-Amz-Expires=300&X-Amz-Signature=dfa677a917823087e2a2257d71f6cda5cfe5df234477e03f452a185ee69f64ca&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dcmake-3.14.5-Linux-x86_64.sh&response-content-type=application%2Foctet-stream Resolving github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)... 52.216.177.91 Connecting to github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)|52.216.177.91|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 37200120 (35M) [application/octet-stream] Saving to: 'cmake-3.14.5-Linux-x86_64.sh' cmake-3.14.5-Linux-x86_ 100%[============================>] 35.48M 4.21MB/s in 8.3s 2019-06-25 11:08:17 (4.29 MB/s) - 'cmake-3.14.5-Linux-x86_64.sh' saved [37200120/37200120] root@02b32b9272ce:/# wget https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.tar.gz --2019-06-25 11:08:30-- https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5-Linux-x86_64.tar.gz Resolving github.com (github.com)... 52.69.186.44 Connecting to github.com (github.com)|52.69.186.44|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://github-production-release-asset-2e65be.s3.amazonaws.com/537699/a94f5500-83a2-11e9-8429-3ec560052352?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190625%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190625T110830Z&X-Amz-Expires=300&X-Amz-Signature=ff23e72dacc51245d203c0ed44ef0669bb18666d37624ee231c38dd054094be9&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dcmake-3.14.5-Linux-x86_64.tar.gz&response-content-type=application%2Foctet-stream [following] --2019-06-25 11:08:30-- https://github-production-release-asset-2e65be.s3.amazonaws.com/537699/a94f5500-83a2-11e9-8429-3ec560052352?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190625%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190625T110830Z&X-Amz-Expires=300&X-Amz-Signature=ff23e72dacc51245d203c0ed44ef0669bb18666d37624ee231c38dd054094be9&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dcmake-3.14.5-Linux-x86_64.tar.gz&response-content-type=application%2Foctet-stream Resolving github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)... 52.216.161.211 Connecting to github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)|52.216.161.211|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 37191648 (35M) [application/octet-stream] Saving to: 'cmake-3.14.5-Linux-x86_64.tar.gz' cmake-3.14.5-Linux-x86_ 100%[============================>] 35.47M 5.26MB/s in 7.7s 2019-06-25 11:08:40 (4.62 MB/s) - 'cmake-3.14.5-Linux-x86_64.tar.gz' saved [37191648/37191648] root@02b32b9272ce:/# ls *.sh cmake-3.14.5-Linux-x86_64.sh root@02b32b9272ce:/# ls -al *.sh -rw-r--r-- 1 root root 37200120 May 31 16:50 cmake-3.14.5-Linux-x86_64.sh root@02b32b9272ce:/# chmod +x cmake-3.14.5-Linux-x86_64.sh root@02b32b9272ce:/# ./cmake-3.14.5-Linux-x86_64.sh CMake Installer Version: 3.14.5, Copyright (c) Kitware This is a self-extracting archive. The archive will be extracted to: / If you want to stop extracting, please press <ctrl-C>. CMake - Cross Platform Makefile Generator Copyright 2000-2019 Kitware, Inc. and Contributors All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Kitware, Inc. nor the names of Contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ------------------------------------------------------------------------------ The following individuals and institutions are among the Contributors: * Aaron C. Meadows <cmake@shadowguarddev.com> * Adriaan de Groot <groot@kde.org> * Aleksey Avdeev <solo@altlinux.ru> * Alexander Neundorf <neundorf@kde.org> * Alexander Smorkalov <alexander.smorkalov@itseez.com> * Alexey Sokolov <sokolov@google.com> * Alex Merry <alex.merry@kde.org> * Alex Turbov <i.zaufi@gmail.com> * Andreas Pakulat <apaku@gmx.de> * Andreas Schneider <asn@cryptomilk.org> * André Rigland Brodtkorb <Andre.Brodtkorb@ifi.uio.no> * Axel Huebl, Helmholtz-Zentrum Dresden - Rossendorf * Benjamin Eikel * Bjoern Ricks <bjoern.ricks@gmail.com> * Brad Hards <bradh@kde.org> * Christopher Harvey * Christoph Grüninger <foss@grueninger.de> * Clement Creusot <creusot@cs.york.ac.uk> * Daniel Blezek <blezek@gmail.com> * Daniel Pfeifer <daniel@pfeifer-mail.de> * Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> * Eran Ifrah <eran.ifrah@gmail.com> * Esben Mose Hansen, Ange Optimization ApS * Geoffrey Viola <geoffrey.viola@asirobots.com> * Google Inc * Gregor Jasny * Helio Chissini de Castro <helio@kde.org> * Ilya Lavrenov <ilya.lavrenov@itseez.com> * Insight Software Consortium <insightsoftwareconsortium.org> * Jan Woetzel * Julien Schueller * Kelly Thompson <kgt@lanl.gov> * Laurent Montel <montel@kde.org> * Konstantin Podsvirov <konstantin@podsvirov.pro> * Mario Bensi <mbensi@ipsquad.net> * Martin Gräßlin <mgraesslin@kde.org> * Mathieu Malaterre <mathieu.malaterre@gmail.com> * Matthaeus G. Chajdas * Matthias Kretz <kretz@kde.org> * Matthias Maennich <matthias@maennich.net> * Michael Hirsch, Ph.D. <www.scivision.co> * Michael Stürmer * Miguel A. Figueroa-Villanueva * Mike Jackson * Mike McQuaid <mike@mikemcquaid.com> * Nicolas Bock <nicolasbock@gmail.com> * Nicolas Despres <nicolas.despres@gmail.com> * Nikita Krupen'ko <krnekit@gmail.com> * NVIDIA Corporation <www.nvidia.com> * OpenGamma Ltd. <opengamma.com> * Patrick Stotko <stotko@cs.uni-bonn.de> * Per Øyvind Karlsen <peroyvind@mandriva.org> * Peter Collingbourne <peter@pcc.me.uk> * Petr Gotthard <gotthard@honeywell.com> * Philip Lowman <philip@yhbt.com> * Philippe Proulx <pproulx@efficios.com> * Raffi Enficiaud, Max Planck Society * Raumfeld <raumfeld.com> * Roger Leigh <rleigh@codelibre.net> * Rolf Eike Beer <eike@sf-mail.de> * Roman Donchenko <roman.donchenko@itseez.com> * Roman Kharitonov <roman.kharitonov@itseez.com> * Ruslan Baratov * Sebastian Holtermann <sebholt@xwmw.org> * Stephen Kelly <steveire@gmail.com> * Sylvain Joubert <joubert.sy@gmail.com> * Thomas Sondergaard <ts@medical-insight.com> * Tobias Hunger <tobias.hunger@qt.io> * Todd Gamblin <tgamblin@llnl.gov> * Tristan Carel * University of Dundee * Vadim Zhukov * Will Dicharry <wdicharry@stellarscience.com> See version control history for details of individual contributions. The above copyright and license notice applies to distributions of CMake in source and binary form. Third-party software packages supplied with CMake under compatible licenses provide their own copyright notices documented in corresponding subdirectories or source files. ------------------------------------------------------------------------------ CMake was initially developed by Kitware with the following sponsorship: * National Library of Medicine at the National Institutes of Health as part of the Insight Segmentation and Registration Toolkit (ITK). * US National Labs (Los Alamos, Livermore, Sandia) ASC Parallel Visualization Initiative. * National Alliance for Medical Image Computing (NAMIC) is funded by the National Institutes of Health through the NIH Roadmap for Medical Research, Grant U54 EB005149. * Kitware, Inc. Do you accept the license? [yN]: y By default the CMake will be installed in: "//cmake-3.14.5-Linux-x86_64" Do you want to include the subdirectory cmake-3.14.5-Linux-x86_64? Saying no will install in: "/" [Yn]: y Using target directory: //cmake-3.14.5-Linux-x86_64 Extracting, please wait... Unpacking finished successfully root@02b32b9272ce:/# ls bin cmake-3.14.5-Linux-x86_64.tar.gz lib opt sbin usr boot dev lib64 proc srv var cmake-3.14.5-Linux-x86_64 etc media root sys cmake-3.14.5-Linux-x86_64.sh home mnt run tmp root@02b32b9272ce:/# pwd / root@02b32b9272ce:/# mv cmake-3.14.5-Linux-x86_64 /opt root@02b32b9272ce:/# ln -s /opt/cmake-3.14.5-Linux-x86_64/bin/* /usr/bin root@02b32b9272ce:/# cmake --version cmake version 3.14.5 CMake suite maintained and supported by Kitware (kitware.com/cmake).参考資料(reference)
Open jij導入失敗
https://qiita.com/kaizen_nagoya/items/11cb393d5b8ce9019cd6Open jij導入失敗(2)
https://qiita.com/kaizen_nagoya/items/aa483a07608f8c3563bcOpenJij チュートリアル
https://openjij.github.io/OpenJijTutorial/_build/html/ja/index.html
- 投稿日:2019-06-25T17:45:36+09:00
GithubやGitlabのアカウント名はハイフンで終わってはいけない
大半の方は関係がない話になりますが、GithubやGitlabのアカウント名のお話です。タイトルの通りアカウント名がハイフンで終わる、例えば「ko-he-」というアカウントの場合、いろいろと不都合が出るのでやめましょうという内容です。
不都合その1:GithubでGithub Pagesを作る場合(多分Gitlabも)
Githubには静的なサイトを公開できるGithub Pagesという機能があります。この機能を
- ユーザー名: ko-he-
- リポジトリ名: testgithubpage
のリポジトリで使用すると
https://ko-he-.github.io/testgithubpage/
というURLで静的なサイトを公開できます。
しかしながらこのページにアクセスするとFirefoxからのアクセスではのように、「潜在的なセキュリティリスクあり」となってしまいます。
不都合その2:GitlabのDockerレジストリを使用する場合
GitlabはリポジトリのDockerレジストリが付いています。特にプライベートリポジトリでの開発の時はDocker Hubで公開するわけにはいかないためとても重宝するのですが、これを「ko-」というアカウントで利用すると、リポジトリからレジストリの画面に移動するときに
のようにステータスコード500が返ってきて利用できません。
解決策と原因
解決策は基本的にはユーザ名を変更するしかありません。Github、Gitlabそれぞれ
- Github: https://github.com/settings/admin > Change Usernameをクリック
- Gitlab: https://gitlab.com/profile/account > Change usernameからUpdate
から変更できます。ただし、ユーザ名を変更する場合、リポジトリ名も変更されてしまうので注意が必要です。
それ以外であれば、適当なグループを作成して、その中でプロジェクトを作成し開発するという手もあります。原因ははっきりとはわかりませんでしたが、不都合その1:GithubでGithub Pagesを作る場合の時に
のように無効な証明書と判断されてしまっていることが怪しそうです。
もう少し調べるとドメイン名のルールでは「ラベルの先頭と末尾の文字をハイフンとするのは不可」となっているため今回のko-he-.github.io
はルール違反ということになります。
ということで、ここら辺が怪しいのですが、GitlabのDockerレジストリの場合とは直接的な関係はなさそうであり、結局原因ははっきりしませんでした。まとめ
アカウント名が「ko-he-」のように最後がハイフンだと起こる不具合を紹介しました。
ただし、Githubに関しては以前は「ko-he-」といったアカウントを作ることができたのですが、現在ではGithubではユーザ名にバリデーションをかけるようになっていて「ko-he-」のようなアカウントは作成できなくなっています。Gitlabに関してはこの記事執筆時点では作成可能だったので気を付けましょう。
- 投稿日:2019-06-25T14:05:36+09:00
マイグレーションについて
前職で、「マイグレーションについて調べてみて。」と言われたけど、結局何を調べて答えたのか忘れてメモもしてなくて。改めて調べてみました。
本記事、間違ってるよ!! な点がありましたら、コメントにてご指摘ください。
Migration とは何者か
【現時点での理解】
複数人で開発していて、データベースが勝手に書き換えられるような環境での開発で、
全員がおんなじ状態のDBを使えるようにする仕組み?ソースコードに対するバージョンコントローラの Git 、
データベースに対するバージョンコントローラの Migrationみたいなものでしょうか。
PHP/Laravel の場合
Ruby on Rails の場合
Docker の場合
参考記事
- 投稿日:2019-06-25T13:50:23+09:00
【Laravel初心者】ルーティングとコントローラーの基礎知識
はじめに
こんにちは。てりーと申します!
プログラミング歴が4ヶ月目に入ろうとしているエンジニアです。今月からLaravelを触り始めたので、備忘録がてら記事の投稿をします。
ルーティングとコントローラについての基礎知識をさらっとまとめました。何かご指摘やアドバイス、感想を言って頂けると幸いです。
参考文献
「PHPプレームワーク Laravel入門」
2章 ルーティングとコントローラルーティング
ルーティングに関する情報は「routes」にまとまっています。
■ 一般的なwebサイト
webサーバーの公開フォルダにファイルを用意しておいて、そこにアクセスしたら表示される。■ Laravel
アドレスに割り付けられたプログラムが実行される。その際の関連付けを行うのがルーティングです。
例:「○○にアクセスすると,××という処理を施される」web.php
このファイルが一般的なwebサイトにアクセスする際に使うルーティングです。
web.php<?php Route::get('/', function () { return view('welcome'); });
'/'
の部分は第1引数に割り当てられるアドレスを指します。
function () {......}
の部分はそれによって呼び起こされる処理が入ります。
function () {
return view('welcome');
});
では、「resouces/view」フォルダにある「welcome.blader.php」をレンダリングして表示しています。コントローラー
具体的な処理を実装するために用意されているのがコントローラです。
LaravelはMVCと呼ばれるアーキティクチャーで、それぞれがM:model データ処理を担当
V:view 画面処理担当。表示用のテンプレートなど
C:controller 全体の制御担当。となっています。
aritsanコマンドでコントローラー作成
php artisan make:controller コントローラー名
「app/Http/controller」フォルダ内に作成される。
アクション追加
HelloController.php<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class HelloController extends Controller { アクション }
class HelloController extends Controller
controllerのクラスを継承
{ アクション}
アクションメソットはここに入れる。web.phpRoute::get('hello','HelloController@index')ルート情報の設定。
Route::get('hello','コントローラー名@アクション名')
まとめ
Qiita初投稿は自分の備忘録として使わせていただきました。
Laravelに慣れていないので、概念的な所を掴むのに苦労しています。次はビューの部分をかじりつつ、実際にbladeテンプレートを作成してみたいと思います。
最後までご拝読ありがとうございました。
- 投稿日:2019-06-25T13:03:38+09:00
EmbulkとFake-s3とDockerの組み合わせ
概要
Embulkを使用して、ローカル環境にあるファイルを取り込んでいたが、そのファイルをs3から取り込む必要が出てきた。開発環境で実際のs3を使うのが良い手ではないため、fake-s3を使うことにした。
Dockerの中のfake-s3の設定とEmbulkのs3プラグインの設定を本記事に記載しておきます。Fake-s3
Fake-s3とは?
https://github.com/jubos/fake-s3Fake S3 is a lightweight server that responds to the same API of Amazon S3.
APIがほぼ一緒。実はAWS CLIでの操作も可能。
さて、Dockerのコンテナを作って、そこでfake-s3を起動させる。
fake-s3の最新バージョンはLicenseが必要。(有料)
お金がもったいないためもっと低いバージョンをインストールする
RUN gem install fakes3 -v 0.2.5fake-s3のルートディレクトリーが必要なので、それを作成する
RUN mkdir -p /fakes3_root/fakes3_rootのしたにあるディレクトリーがバケットになるので(下記のように)、事前に作っといても良い。
- fakes3_root
- bucket_name_1
- bucket_name_2
RUN mkdir -p /fakes3_root/test_bucket最後は下記のラインをDockerfileにたす。ルートとポートを指定してfake-s3を起動させる
# run s3 CMD [ "fakes3", "-r", "/fakes3_root", "-p", "4567" ]接続できるようにポートを開ける必要がある (docker-compose用)
expose: - 4567 ports: - 4567:4567これでコンテナを起動して、ブラウザーから http://127.0.0.1:4567 をアクセスすると、XMLが表示される
<ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Owner> <ID>123</ID> <DisplayName>FakeS3</DisplayName> </Owner> <Buckets> <Bucket> <Name>bucket_name_1</Name> <CreationDate>2019-06-24T08:54:00.000Z</CreationDate> </Bucket> <Bucket> <Name>bucket_name_2</Name> <CreationDate>2019-06-24T08:54:00.000Z</CreationDate> </Bucket> </Buckets> </ListAllMyBucketsResult>これでfake-s3が動いている状態。API又はCLIを使って、ファイルをアップロードすることが可能。
注意点
- コンテナをビルドする前にバケットの下にファイルを置いといても、それが認識されない。fake-s3を起動してからファイルをアップロードするしかないみたい。
- コンテナの中でAWS CLIをインストールして、gzipファイルをアップロードしようとするとエラーになる。(エラー内容がおかしい (Syntax error)、おそらくfake-s3のバージョンが最新ではないのが原因)自分はコンテナの外からアップロードするようにした。
Embulk
s3からファイルを取り込むプラグインが存在する。それがembulk-input-s3というプラグイン。
https://github.com/embulk/embulk-input-s3実際のs3とfake-s3、どちらを使っても設定はほとんど一緒だがfake-s3が認証を問わない。AccessとSecret Keyの値はなんでも良い。
そして今回faka-s3が別のコンテナで動いているからproxyを設定する必要がある。Embulkのyml.liquidファイルの設定が下記になる
in: type: s3 bucket: {{ bucket }} path_prefix: {{ path_prefix }} endpoint: {{ endpoint }} auth_method: anonymous http_proxy: host: fake-s3 port: 4567bucket: 自分のバケット名
path_prefix: お好きにどうぞ
endpoint: はfake-s3の場合に http://fake-s3:4567 になる
host: fake-s3 は自分のコンテナの名前
auth_method: basicの場合はAccess/Secret Keyはなんでもいい、anonymousもそのまま動く。ただし、instanceを設定してみた時は unable to load credentials というエラーが出た。インスタンスのメソッドを諦めた。おまけ
これでとりあえずEmbulkで別コンテナからS3プラグインを使ってファイルを取り込むようになった。
問題は色々あったが、それは多分バージョンが低いのが原因。
無料でローカルでシミュレーションができたからよしとする。
- 投稿日:2019-06-25T12:28:55+09:00
マイクロサービスでは環境によって変わる変数は環境変数を直接書いた方が良いと思ったという話
About
タイトルだけを見ると何を当たり前の事をと思われると思いますが
Ruby on Railsではdevelopmentやproductionでの変数を切り替える方法がいくつかあります。プログラム内で分岐する
def switch_var case Rails.env when 'production' then 'var of production' when 'development' then 'var of development' else 'default var' end endこんなコードを書いている人もいると思います。
私も昔書いていましたが、何度か変数の変更が入ると変更すべきコードを探すのが億劫になります。dotenv-rails
https://github.com/bkeepers/dotenv
.envファイルを読み込む事で各環境での変数を定義します。
ただ、.envはgitへのコミット非推奨な割に
dotenvとrailsが密になってしまいstaging環境やproduction環境を構築する際に窮屈さを感じました。
ただ、ローカル環境においてはdocker-composeと.envを組み合わせるという方法はアリだと思います。config設定用のgemを利用する
他にも色々ありますが、yamlでconfigを管理する様なgemがあります。
それなりに便利なので一時期使っていましたが、
結局gemに依存するとメンテナンスコストもかかってしまうので
特にマイクロサービスレベルでの環境変数程度で有ればgemは不要だと私は思いました。環境変数をアプリケーションに渡す
test, development環境
Docker前提で作っているのでdocker-composeで渡します。
CI上でもdocker-compose.ymlを専用に作っておいてそちらを利用しています。version: '3' services: web: environment: - RAILS_ENV - RACK_ENV - AWS_BUCKET_NAME=xxxx - AWS_ACCESS_KEY_ID=xxxx - AWS_SECRET_ACCESS_KEY=xxxx何も書かないとhostの環境変数が使われます。
production環境
マイクロサービスをTerraformで定義しています。
ECSのタスク定義で渡します。ecs.tfresource "aws_ecs_task_definition" "task" { container_definitions = data.template_file.service_container_definition.rendered } data "template_file" "service_container_definition" { template = file("./templates/container_definitions.json.tpl") }container_definitions.json.tpl[ { "environment": [ { "name": "RAILS_ENV", "value": "production" }, { "name": "RACK_ENV", "value": "production" }, { "name": "AWS_BUCKET_NAME", "value": "xxxx" }, { "name": "AWS_ACCESS_KEY_ID", "value": "xxxx" }, { "name": "AWS_SECRET_ACCESS_KEY", "value": "xxxx" } ] } ]実際にはアプリケーションケーションの規模によって
最適なツールが有るのかも知れませんが
マイクロサービスにおいてはこういう形で渡した方が見通しも良くなっていると思いました。
- 投稿日:2019-06-25T12:03:22+09:00
今日のdocker error: 動作止まる
macOS$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE kaizenjapan/qc-nakamori latest 5186ef78791c 3 days ago 235MB kaizenjapan/qc-nakamori <none> 0b0b4bb6b179 3 days ago 194MB ubuntu latest 4c108a37151f 6 days ago 64.2MB kaizenjapan/100pon latest 07d217d26151 5 months ago 20.4GB continuumio/anaconda3 latest 69acfdf1121f 5 months ago 3.72GB nginx latest 7042885a156a 5 months ago 109MB kaizenjapan/gccv850src latest 5e61526ac5aa 6 months ago 2.3GB kaizejpanan/gccv850src latest 48a9ecda4099 6 months ago 1.15GB gcc latest 48a9ecda4099 6 months ago 1.15GB centos latest 1e1148e4cc2c 6 months ago 202MBdocker rmi xxxでエラーが出る。
macOS$ docker ps -aで出たものを
macOS$ docker rm xxxxxで消していった。
2つ目までは成功。
3つ目で反応が10分しても20分してもない。OS再起動して少し作業してたら、
macOS$ docker ps -aで結果が出てこない。
その前少しは, docker rmi, docker rmが動いた。
今日のdocker error: Error response from daemon: Bad response from Docker engine
https://qiita.com/kaizen_nagoya/items/c360b30b66b18b16d679macOS$ ps -ax ... 721 ttys001 0:00.03 login -pf administrator 723 ttys001 0:00.04 -bash 1376 ttys001 0:00.49 docker rmi 07d217d26151 829 ttys002 0:00.03 login -pf administrator 830 ttys002 0:01.18 -bash 1378 ttys002 0:00.26 docker ps -a 1299 ttys003 0:00.02 login -pf administrator 1300 ttys003 0:00.03 -bash 1522 ttys003 0:00.00 ps -axあれ、docker rmiも終わっていないらしい。
macOS$ kill 1376 $ kill 1378grepしてみる。
macOSps -ax | grep docker 88 ?? 0:00.01 /Library/PrivilegedHelperTools/com.docker.vmnetd 1255 ?? 0:00.31 /Applications/Docker.app/Contents/MacOS/com.docker.supervisor -watchdog fd:0 1256 ?? 0:00.03 com.docker.osxfs serve --address fd:3 --connect vms/0/connect --control fd:4 --log-destination asl 1257 ?? 0:03.51 com.docker.vpnkit --ethernet fd:3 --port vpnkit.port.sock --port hyperkit://:62373/./vms/0 --diagnostics fd:4 --pcap fd:5 --vsock-path vms/0/connect --host-names host.docker.internal,docker.for.mac.host.internal,docker.for.mac.localhost --gateway-names gateway.docker.internal,docker.for.mac.gateway.internal,docker.for.mac.http.internal --vm-names docker-for-desktop --listen-backlog 32 --mtu 1500 --allowed-bind-addresses 0.0.0.0 --http /Users/administrator/Library/Group Containers/group.com.docker/http_proxy.json --dhcp /Users/administrator/Library/Group Containers/group.com.docker/dhcp.json --port-max-idle-time 300 --max-connections 2000 --gateway-ip 192.168.65.1 --host-ip 192.168.65.2 --lowest-ip 192.168.65.3 --highest-ip 192.168.65.254 --log-destination asl --udpv4-forwards 123:127.0.0.1:54159 --gc-compact-interval 1800 1258 ?? 0:00.55 com.docker.driver.amd64-linux -addr fd:3 -debug 1264 ?? 256:41.44 com.docker.hyperkit -A -u -F vms/0/hyperkit.pid -c 2 -m 2048M -s 0:0,hostbridge -s 31,lpc -s 1:0,virtio-vpnkit,path=vpnkit.eth.sock,uuid=3c4c03f6-0651-475f-a27e-9e373010a592 -U 4fcfa162-45ca-41c2-ae73-845958581724 -s 2:0,ahci-hd,file:///Users/administrator/Library/Containers/com.docker.docker/Data/vms/0/Docker.qcow2?sync=os&buffered=1,format=qcow,qcow-config=discard=true;compact_after_unmaps=262144;keep_erased=262144;runtime_asserts=false -s 3,virtio-sock,guest_cid=3,path=vms/0,guest_forwards=2376;1525 -s 4,ahci-cd,/Applications/Docker.app/Contents/Resources/linuxkit/docker-for-mac.iso -s 5,ahci-cd,vms/0/config.iso -s 6,ahci-cd,/Applications/Docker.app/Contents/Resources/linuxkit/docker.iso -s 7,virtio-rnd -l com1,autopty=vms/0/tty,asl -f bootrom,/Applications/Docker.app/Contents/Resources/uefi/UEFI.fd,,macOSKM-S05:~ administrator$ kill 1378 KM-S05:~ administrator$ lo;; 1264 -bash: syntax error near unexpected token `;;' KM-S05:~ administrator$ kill 1264 KM-S05:~ administrator$ kill 1258 KM-S05:~ administrator$ kill 1257 KM-S05:~ administrator$ docker images ^C KM-S05:~ administrator$ kill 1255 KM-S05:~ administrator$ kill 88 -bash: kill: (88) - Operation not permitted KM-S05:~ administrator$ kill -9 88 -bash: kill: (88) - Operation not permitted KM-S05:~ administrator$ sudo kill -9 88 Password: KM-S05:~ administrator$ ps -ax | grep docker 1264 ?? 262:07.11 com.docker.hyperkit -A -u -F vms/0/hyperkit.pid -c 2 -m 2048M -s 0:0,hostbridge -s 31,lpc -s 1:0,virtio-vpnkit,path=vpnkit.eth.sock,uuid=3c4c03f6-0651-475f-a27e-9e373010a592 -U 4fcfa162-45ca-41c2-ae73-845958581724 -s 2:0,ahci-hd,file:///Users/administrator/Library/Containers/com.docker.docker/Data/vms/0/Docker.qcow2?sync=os&buffered=1,format=qcow,qcow-config=discard=true;compact_after_unmaps=262144;keep_erased=262144;runtime_asserts=false -s 3,virtio-sock,guest_cid=3,path=vms/0,guest_forwards=2376;1525 -s 4,ahci-cd,/Applications/Docker.app/Contents/Resources/linuxkit/docker-for-mac.iso -s 5,ahci-cd,vms/0/config.iso -s 6,ahci-cd,/Applications/Docker.app/Contents/Resources/linuxkit/docker.iso -s 7,virtio-rnd -l com1,autopty=vms/0/tty,asl -f bootrom,/Applications/Docker.app/Contents/Resources/uefi/UEFI.fd,, 1631 ttys003 0:00.00 grep dockermacOSKM-S05:~ administrator$ kill 1264 KM-S05:~ administrator$ ps -ax | grep docker 1264 ?? 263:34.57 com.docker.hyperkit -A -u -F vms/0/hyperkit.pid -c 2 -m 2048M -s 0:0,hostbridge -s 31,lpc -s 1:0,virtio-vpnkit,path=vpnkit.eth.sock,uuid=3c4c03f6-0651-475f-a27e-9e373010a592 -U 4fcfa162-45ca-41c2-ae73-845958581724 -s 2:0,ahci-hd,file:///Users/administrator/Library/Containers/com.docker.docker/Data/vms/0/Docker.qcow2?sync=os&buffered=1,format=qcow,qcow-config=discard=true;compact_after_unmaps=262144;keep_erased=262144;runtime_asserts=false -s 3,virtio-sock,guest_cid=3,path=vms/0,guest_forwards=2376;1525 -s 4,ahci-cd,/Applications/Docker.app/Contents/Resources/linuxkit/docker-for-mac.iso -s 5,ahci-cd,vms/0/config.iso -s 6,ahci-cd,/Applications/Docker.app/Contents/Resources/linuxkit/docker.iso -s 7,virtio-rnd -l com1,autopty=vms/0/tty,asl -f bootrom,/Applications/Docker.app/Contents/Resources/uefi/UEFI.fd,, 1642 ttys003 0:00.00 grep docker KM-S05:~ administrator$ kill -9 1264 KM-S05:~ administrator$ ps -ax | grep docker 1644 ttys003 0:00.00 grep dockerなんとか消えた。
macOS$ docker images Error response from daemon: Bad response from Docker engine今度はこっち。何分で消えるかを測定するかどうか。と思ったら1分でエラーは出なくなった。
- 投稿日:2019-06-25T12:03:22+09:00
docker(22) 今日のdocker error: 動作止まる
macOS$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE kaizenjapan/qc-nakamori latest 5186ef78791c 3 days ago 235MB kaizenjapan/qc-nakamori <none> 0b0b4bb6b179 3 days ago 194MB ubuntu latest 4c108a37151f 6 days ago 64.2MB kaizenjapan/100pon latest 07d217d26151 5 months ago 20.4GB continuumio/anaconda3 latest 69acfdf1121f 5 months ago 3.72GB nginx latest 7042885a156a 5 months ago 109MB kaizenjapan/gccv850src latest 5e61526ac5aa 6 months ago 2.3GB kaizejpanan/gccv850src latest 48a9ecda4099 6 months ago 1.15GB gcc latest 48a9ecda4099 6 months ago 1.15GB centos latest 1e1148e4cc2c 6 months ago 202MBdocker rmi xxxでエラーが出る。
macOS$ docker ps -aで出たものを
macOS$ docker rm xxxxxで消していった。
2つ目までは成功。
3つ目で反応が10分しても20分してもない。OS再起動して少し作業してたら、
macOS$ docker ps -aで結果が出てこない。
その前少しは, docker rmi, docker rmが動いた。
今日のdocker error: Error response from daemon: Bad response from Docker engine
https://qiita.com/kaizen_nagoya/items/c360b30b66b18b16d679macOS$ ps -ax ... 721 ttys001 0:00.03 login -pf administrator 723 ttys001 0:00.04 -bash 1376 ttys001 0:00.49 docker rmi 07d217d26151 829 ttys002 0:00.03 login -pf administrator 830 ttys002 0:01.18 -bash 1378 ttys002 0:00.26 docker ps -a 1299 ttys003 0:00.02 login -pf administrator 1300 ttys003 0:00.03 -bash 1522 ttys003 0:00.00 ps -axあれ、docker rmiも終わっていないらしい。
macOS$ kill 1376 $ kill 1378grepしてみる。
macOSps -ax | grep docker 88 ?? 0:00.01 /Library/PrivilegedHelperTools/com.docker.vmnetd 1255 ?? 0:00.31 /Applications/Docker.app/Contents/MacOS/com.docker.supervisor -watchdog fd:0 1256 ?? 0:00.03 com.docker.osxfs serve --address fd:3 --connect vms/0/connect --control fd:4 --log-destination asl 1257 ?? 0:03.51 com.docker.vpnkit --ethernet fd:3 --port vpnkit.port.sock --port hyperkit://:62373/./vms/0 --diagnostics fd:4 --pcap fd:5 --vsock-path vms/0/connect --host-names host.docker.internal,docker.for.mac.host.internal,docker.for.mac.localhost --gateway-names gateway.docker.internal,docker.for.mac.gateway.internal,docker.for.mac.http.internal --vm-names docker-for-desktop --listen-backlog 32 --mtu 1500 --allowed-bind-addresses 0.0.0.0 --http /Users/administrator/Library/Group Containers/group.com.docker/http_proxy.json --dhcp /Users/administrator/Library/Group Containers/group.com.docker/dhcp.json --port-max-idle-time 300 --max-connections 2000 --gateway-ip 192.168.65.1 --host-ip 192.168.65.2 --lowest-ip 192.168.65.3 --highest-ip 192.168.65.254 --log-destination asl --udpv4-forwards 123:127.0.0.1:54159 --gc-compact-interval 1800 1258 ?? 0:00.55 com.docker.driver.amd64-linux -addr fd:3 -debug 1264 ?? 256:41.44 com.docker.hyperkit -A -u -F vms/0/hyperkit.pid -c 2 -m 2048M -s 0:0,hostbridge -s 31,lpc -s 1:0,virtio-vpnkit,path=vpnkit.eth.sock,uuid=3c4c03f6-0651-475f-a27e-9e373010a592 -U 4fcfa162-45ca-41c2-ae73-845958581724 -s 2:0,ahci-hd,file:///Users/administrator/Library/Containers/com.docker.docker/Data/vms/0/Docker.qcow2?sync=os&buffered=1,format=qcow,qcow-config=discard=true;compact_after_unmaps=262144;keep_erased=262144;runtime_asserts=false -s 3,virtio-sock,guest_cid=3,path=vms/0,guest_forwards=2376;1525 -s 4,ahci-cd,/Applications/Docker.app/Contents/Resources/linuxkit/docker-for-mac.iso -s 5,ahci-cd,vms/0/config.iso -s 6,ahci-cd,/Applications/Docker.app/Contents/Resources/linuxkit/docker.iso -s 7,virtio-rnd -l com1,autopty=vms/0/tty,asl -f bootrom,/Applications/Docker.app/Contents/Resources/uefi/UEFI.fd,,macOSKM-S05:~ administrator$ kill 1378 KM-S05:~ administrator$ lo;; 1264 -bash: syntax error near unexpected token `;;' KM-S05:~ administrator$ kill 1264 KM-S05:~ administrator$ kill 1258 KM-S05:~ administrator$ kill 1257 KM-S05:~ administrator$ docker images ^C KM-S05:~ administrator$ kill 1255 KM-S05:~ administrator$ kill 88 -bash: kill: (88) - Operation not permitted KM-S05:~ administrator$ kill -9 88 -bash: kill: (88) - Operation not permitted KM-S05:~ administrator$ sudo kill -9 88 Password: KM-S05:~ administrator$ ps -ax | grep docker 1264 ?? 262:07.11 com.docker.hyperkit -A -u -F vms/0/hyperkit.pid -c 2 -m 2048M -s 0:0,hostbridge -s 31,lpc -s 1:0,virtio-vpnkit,path=vpnkit.eth.sock,uuid=3c4c03f6-0651-475f-a27e-9e373010a592 -U 4fcfa162-45ca-41c2-ae73-845958581724 -s 2:0,ahci-hd,file:///Users/administrator/Library/Containers/com.docker.docker/Data/vms/0/Docker.qcow2?sync=os&buffered=1,format=qcow,qcow-config=discard=true;compact_after_unmaps=262144;keep_erased=262144;runtime_asserts=false -s 3,virtio-sock,guest_cid=3,path=vms/0,guest_forwards=2376;1525 -s 4,ahci-cd,/Applications/Docker.app/Contents/Resources/linuxkit/docker-for-mac.iso -s 5,ahci-cd,vms/0/config.iso -s 6,ahci-cd,/Applications/Docker.app/Contents/Resources/linuxkit/docker.iso -s 7,virtio-rnd -l com1,autopty=vms/0/tty,asl -f bootrom,/Applications/Docker.app/Contents/Resources/uefi/UEFI.fd,, 1631 ttys003 0:00.00 grep dockermacOSKM-S05:~ administrator$ kill 1264 KM-S05:~ administrator$ ps -ax | grep docker 1264 ?? 263:34.57 com.docker.hyperkit -A -u -F vms/0/hyperkit.pid -c 2 -m 2048M -s 0:0,hostbridge -s 31,lpc -s 1:0,virtio-vpnkit,path=vpnkit.eth.sock,uuid=3c4c03f6-0651-475f-a27e-9e373010a592 -U 4fcfa162-45ca-41c2-ae73-845958581724 -s 2:0,ahci-hd,file:///Users/administrator/Library/Containers/com.docker.docker/Data/vms/0/Docker.qcow2?sync=os&buffered=1,format=qcow,qcow-config=discard=true;compact_after_unmaps=262144;keep_erased=262144;runtime_asserts=false -s 3,virtio-sock,guest_cid=3,path=vms/0,guest_forwards=2376;1525 -s 4,ahci-cd,/Applications/Docker.app/Contents/Resources/linuxkit/docker-for-mac.iso -s 5,ahci-cd,vms/0/config.iso -s 6,ahci-cd,/Applications/Docker.app/Contents/Resources/linuxkit/docker.iso -s 7,virtio-rnd -l com1,autopty=vms/0/tty,asl -f bootrom,/Applications/Docker.app/Contents/Resources/uefi/UEFI.fd,, 1642 ttys003 0:00.00 grep docker KM-S05:~ administrator$ kill -9 1264 KM-S05:~ administrator$ ps -ax | grep docker 1644 ttys003 0:00.00 grep dockerなんとか消えた。
macOS$ docker images Error response from daemon: Bad response from Docker engine今度はこっち。何分で消えるかを測定するかどうか。と思ったら1分でエラーは出なくなった。
文書履歴(document history)
- 投稿日:2019-06-25T11:57:48+09:00
docker-composeを使用しないコンテナ作成~起動(Rocket.Chat編)
Dockerと言えばあたり前のようにdocker-composeが使用されていますが
もっと基礎から学びたい!そんな内容です。環境
$ cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) $ docker --version Docker version 1.13.1, build b2f74b2/1.13.1なお
sudo
は面倒なので書いていません。
上手に読み替えてください。目次
Dockerインストール
epel
とかius
とかリポジトリ拡張は不要。
まずはホストサーバがオンラインであることを確認します。$ ping google.com -c 3 PING google.com (216.58.197.174) 56(84) bytes of data. 64 bytes from nrt12s02-in-f174.1e100.net (216.58.197.174): icmp_seq=1 ttl=49 time=59.7 ms 64 bytes from nrt12s02-in-f174.1e100.net (216.58.197.174): icmp_seq=2 ttl=49 time=50.1 ms 64 bytes from nrt12s02-in-f174.1e100.net (216.58.197.174): icmp_seq=3 ttl=49 time=47.6 ms
ping
が届かない = オフラインであれば、/etc/resolv.conf
を編集するとか
/sbin/ip route add default via xxxx
でゲートウェイ設定するとよいです。さっそくDockerをインストールします。
本項ではdocker-compose
については触れませんが
今後のために最初から入れておいたほうが良いと思います。$ yum install docker docker-compose $ systemctl start docker $ systemctl enable docker続いて
SELinux
、firewalld
を容赦なく止めます。
使いこなせるとカッコいいですね。$ getenforce Enforcing $ setenfoce 0 $ getenforce Permissive $ vim /etc/selinux/config ---------------------------------------------------------------------- # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. - SELINUX=enforcing + SELINUX=disabled # SELINUXTYPE= can take one of three values: ---------------------------------------------------------------------- $ systemctl stop firewalld $ systemctl disable firewalldここまでたどり着いたら準備完了です。
最後に状況を確認しておきます。$ docker --version Docker version 1.13.1, build b2f74b2/1.13.1 $ docker images REPOSITORY TAG IMAGE ID CREATED SIZERocket.Chatを起動する
試しに
slack
ライクなChatツール、Rocket.Chat
を起動します。Rocket.Chatの構成を知る
ぐぐる。
Docker ComposeでRocket.Chatを立ち上げるRocket.Chatは以下の2つのimageから成り立つことがわかります。
- Rocket.Chat 本体
- mongoDB
mongoDBのDB領域を作る(Volume)
mongoDB用の領域をホストサーバに作成します。
これをしないとChatのログがコンテナの中だけに保存されてしまい、
コンテナの破棄に伴ってログも消えてしまいます。普段は専用のLVを作成しますが、そこはややこしくなるので割愛。
今回は単純に/var
配下にディレクトリを作成するだけにします。$ mkdir -p /var/data/rocketchat_dbmongoDBのコンテナを作る
mongoDBのイメージをdocker hubから探します。
$ docker search mongo INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/mongo MongoDB document databases provide high av... 5967 [OK] docker.io docker.io/mongo-express Web-based MongoDB admin interface, written... 468 [OK] docker.io docker.io/tutum/mongodb MongoDB Docker image ? listens in port 270... 226 [OK] :今回は公式イメージの
docker.io/mongo
を使います。
mongo:tag本記事執筆時点で
mongo:3.4.21
が最新でした。
docekr pull
でイメージを取得します。$ docker pull mongo:3.4.21 $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/mongo 3.4.21 0a8d98121dec 5 days ago 426 MBコンテナを作成するにあたり、mongoDBが要求するオプションを
mongo:descriptionから学びます。Connect to MongoDB from another Docker container
mongoDBはデフォルトで「27017」ポートを使用するらしいです。
今回は他にmongoDBを使用しているコンテナが無いのでこのままにしておきます。Customize configuration without configuration file
オプション
--smallfiles
を付与するとmongoDBを小さいサイズで運用できます。
「"小さいサイズ"ってなんだ?」は以下を参照してください。Setting WiredTiger cache size limits
MongoDBが使用するキャッシュサイズを指定できます。
なんとdocker側の機能でメモリを指定(--memory string
)しても効かないらしいです。
実運用する場合は指定が必須なのかもしれませんね。今回は
--wiredTigerCacheSizeGB 1.5
で1.5GBにおさめます。
メモリ+キャッシュが合計2GBぐらいになる目安です。Using a custom MongoDB configuration file
mongoDBのconfigファイルをホストサーバに用意しておくことも可能です。
今回は必要なオプションは全てコンテナ作成時に引数で渡すので不要です。Environment Variables
スーパーユーザ、パスワードを指定できます。
これはインスタンス構築時のみ有効で後からは変更できません。試しに以下のとおり設定してみます。
-e MONGO_INITDB_ROOT_USERNAME=rcadmin \ -e MONGO_INITDB_ROOT_PASSWORD=p@55w0rdまた
MONGO_INITDB_DATABASE
を指定するとデータベース名を指定できるらしいですが
恐らくRocket.ChatアプリがDBを作成するのでココは指定する必要はないです。注意したいのがコンテナ作成時の構文です。
$ docker container create [オプション] image名 [COMMAND]dockerコマンドのオプションはimageの前に指定します。
imageの後ろに指定するとCOMMAND扱いとなってしまいます。
ざっと見た感じこんなところでした。
より詳しくはmongoDBのホームページを見るべきでしょう。上記を踏まえ、以下のようにコンテナを作成します。
$ docker container create \ --name rocketchat_db \ --volume=/var/data/rocketchat_db:/data/db \ -e MONGO_INITDB_ROOT_USERNAME=rcadmin \ -e MONGO_INITDB_ROOT_PASSWORD=p@55w0rd \ mongo:3.4.21 \ --smallfiles \ --wiredTigerCacheSizeGB 1.5 $ docker container list --all CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 555eb5e21cd6 mongo:3.4.21 "docker-entrypoint..." 9 seconds ago Created rocketchat_db無事にコンテナ作成完了しました。
Rocket.Chatのコンテナを作る
rocket.chatのイメージをdocker hubから探します。
$ docker search rocket.chat INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/rocket.chat The Complete Open Source Chat Solution 433 [OK] docker.io docker.io/rocketchat/rocket.chat Official Rocket.Chat docker deployment ima... 170 [OK] docker.io docker.io/rocketchat/rocket.chat.enterprise Rocket.Chat Enterprise 2 docker.io docker.io/monolitme/rocket.chat FIGapp customization to RocketChat 1 [OK] :Qiitaに投稿されている記事を見ると3分の1ぐらいの方が
docker.io/rocketchat/rocket.chat
を使用していました。Rocket.Chatの公開場所は以下の2つが存在するようです。
- rocket.chat
- rocketchat/rocket.chat
公式(OFFICIAL)の
docker.io/rocket.chat
の方が
マニュアルが充実しているのでこちらを採用します。本記事執筆時点で
rocket.chat:1.1.2
が最新でした。
docekr pull
でイメージを取得します。$ docker pull rocket.chat:1.1.2 $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/rocket.chat 1.1.2 a4180953b9e4 5 hours ago 696 MB docker.io/mongo 3.4.21 0a8d98121dec 6 days ago 426 MBコンテナを作成するにあたり、rocket.chatが要求するオプションを
rocket.chat:descriptionから学びます。First, start an instance of mongo:
これはもうやったのでスキップ
Then start Rocket.Chat linked to this mongo instance:
起動時に先に作ったmongoDBとlinkするだけのようです。
This will start a Rocket.Chat instance listening on the default Meteor port of 3000 on the container.
デフォルトでは3000ポートらしいです。
特に希望は無いので3000ポートのまま運用します。
念の為、-p 3000:3000
で明示的にホストの3000ポートと結びつけることにしました。Then, access it via http://localhost in a browser. Replace localhost in ROOT_URL with your own domain name if you are hosting at your own domain.
If you're using a third party Mongo provider, or working with Kubernetes, you need to override the MONGO_URL environment variable:k8sもしくはサードパーティ製のmongoDBを使用する場合は
mongoDBのURLを指定しないといけないらしいです。
今回は同じdockerホスト上でlink接続するので不要です。
思ったよりもオプションが少ないですね。
が、Rocket.Chat自体を調べていると以下の記事を発見しました。Docker Composeを使ったRocketChatのインストールと基本的な使い方 (1/3)
この記事の
docker-compose
で使用するYAMLファイルを参照すると
以下のように環境変数を与えています。rocketchat: # コンテナイメージを指定(image:コンテナイメージ名:タグ名) image: rocketchat/rocket.chat:latest # 環境変数を設定 environment: # MongoDB(db)のURLを指定 - MONGO_URL=mongodb://db:27017/rocketchat # RocketChatのURL(ここではホスト名をlocalhostとしています) - ROOT_URL=http://localhost # アカウントのメールアドレスのドメインチェックを無効化 - Accounts_UseDNSDomainCheck=false # MongoDB(db)へのリンクを指定 links: - db:db # RocketChatのポートを設定 ports: - 3000:3000この
ROOT_URL
というのが問題のようです。
今回はホストサーバと同じIPアドレスを指定しておきます。
上記を踏まえ、以下のようにコンテナを作成します。
$ docker container create \ --name rocketchat \ -p 3000:3000 \ --link rocketchat_db \ -e ROOT_URL=http://192.168.10.100 \ rocket.chat:1.1.2 $ docker container list --all CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e408b03cc6e9 rocket.chat:1.1.2 "node main.js" 11 seconds ago Created rocketchat 555eb5e21cd6 mongo:3.4.21 "docker-entrypoint..." About a minute ago Created rocketchat_db無事にコンテナ作成完了しました。
Rocket.Chatを起動する
作成済みのコンテナを確認します。
$ docker container list --all CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e408b03cc6e9 rocket.chat:1.1.2 "node main.js" 6 minutes ago Created rocketchat 555eb5e21cd6 mongo:3.4.21 "docker-entrypoint..." 7 minutes ago Created rocketchat_dbRocket.Chatのマニュアルに従い、mongo -> rocket.chatの順に起動します。
まずはmongoDB$ docker container start rocketchat_db $ docker container list --all CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e408b03cc6e9 rocket.chat:1.1.2 "node main.js" 7 minutes ago Created rocketchat 555eb5e21cd6 mongo:3.4.21 "docker-entrypoint..." 9 minutes ago Up 23 seconds 27017/tcp rocketchat_db
STATUS
がUp
に変わりました。
続いてRocket.chatを起動します。$ docker container start rocketchat Error response from daemon: driver failed programming external connectivity on endpoint rocketchat (51314050dba540e3430e0685ec5b643b9e43c2a495e469b2154ee7760b6c7692): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3000 -j DNAT --to-destination 172.17.0.3:3000 ! -i docker0: iptables: No chain/target/match by that name. (exit status 1)) Error: failed to start containers: rocketchatエラーが出てしまいました。内容を確認します。
どうやらiptables
によるフォワーディングを仕掛けようとしたところ失敗した様子。ぐぐるとdockerデーモンの再起動で復活したという情報がありました。
Dockerコンテナがiptablesのエラーで立ち上がらなくなった$ docker container stop rocketchat_db $ systemctl restart docker $ docker ps -a $ docker container start rocketchat_db $ docker container start rocketchat起動確認をしてみます。
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e408b03cc6e9 rocket.chat:1.1.2 "node main.js" 19 minutes ago Exited (1) 3 minutes ago rocketchat 555eb5e21cd6 mongo:3.4.21 "docker-entrypoint..." 20 minutes ago Up 3 minutes 27017/tcp rocketchat_db起動時にエラーはでなかったですが
Exited(1)
になっています。
別の問題で起動できていないようです。
docker logs
コマンドで標準出力を確認してみます。$ docker logs rocketchat /app/bundle/programs/server/node_modules/fibers/future.js:313 throw(ex); ^ MongoNetworkError: failed to connect to server [db:27017] on first connect [MongoNetworkError: getaddrinfo ENOTFOUND db db:27017] at Pool.<anonymous> (/app/bundle/programs/server/npm/node_modules/meteor/npm-mongo/node_modules/mongodb-core/lib/topologies/server.js:564:11) at emitOne (events.js:116:13) at Pool.emit (events.js:211:7) at Connection.<anonymous> (/app/bundle/programs/server/npm/node_modules/meteor/npm-mongo/node_modules/mongodb-core/lib/connection/pool.js:317:12) at Object.onceWrapper (events.js:317:30) at emitTwo (events.js:126:13) at Connection.emit (events.js:214:7) at Socket.<anonymous> (/app/bundle/programs/server/npm/node_modules/meteor/npm-mongo/node_modules/mongodb-core/lib/connection/connection.js:246:50) at Object.onceWrapper (events.js:315:30) at emitOne (events.js:116:13) at Socket.emit (events.js:211:7) at emitErrorNT (internal/streams/destroy.js:64:8) at _combinedTickCallback (internal/process/next_tick.js:138:11) at process._tickCallback (internal/process/next_tick.js:180:9)
getaddressinfo ENOTFOUND db
と出ています。
どうやらmongoDBとの接続周りで失敗しているようです。Rocket.Chatコンテナ作成時の
--link
オプションを編集します。
rocketchat_db
コンテナがdb
であると認識付けるため
--link rocketchat_db:db
とします。$ docker container rm rocketchat $ docker container create \ --name rocketchat \ -p 3000:3000 \ --link rocketchat_db:db \ -e ROOT_URL=http://192.168.10.100 \ rocket.chat:1.1.2 $ docker container start rocketchat $ docker container list --all CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5a7f04dc0611 rocket.chat:1.1.2 "node main.js" About a minute ago Exited (1) 2 seconds ago rocketchat 052a9dd76d9a mongo:3.4.21 "docker-entrypoint..." 2 minutes ago Up 17 seconds 27017/tcp rocketchat_dbまだ駄目でした。ログを確認してみます。
$ docker logs rocketchat /app/bundle/programs/server/node_modules/fibers/future.js:313 throw(ex); ^ MongoError: not authorized on meteor to execute command { listIndexes: "users", cursor: {} } at queryCallback (/app/bundle/programs/server/npm/node_modules/meteor/npm-mongo/node_modules/mongodb-core/lib/cursor.js:248:25) at /app/bundle/programs/server/npm/node_modules/meteor/npm-mongo/node_modules/mongodb-core/lib/connection/pool.js:532:18 at _combinedTickCallback (internal/process/next_tick.js:131:7) at process._tickCallback (internal/process/next_tick.js:180:9)先程とログが違います。少し進んだようです。
次のログはmongoDB上のエラーです。
not authorized
なのでmongoDB上でのコマンド実行に失敗したようです。関連しそうなのはmongoDB構築時に指定した
ROOT_USERNAME
とROOT_PASSWORD
です。
一度これらを指定しないで起動してみます。$ docker container stop rocketchat_db $ docker container rm rocketchat_db $ docker container rm rocketchat $ docker container create \ --name rocketchat_db \ --volume=/var/data/rocketchat_db:/data/db \ mongo:3.4.21 \ --smallfiles \ --wiredTigerCacheSizeGB 1.5 $ docker container create \ --name rocketchat \ -p 3000:3000 \ --link rocketchat_db:db \ -e ROOT_URL=http://192.168.10.100 \ rocket.chat:1.1.2 $ docker container start rocketchat_db $ docker container start rocketchat $ docker container list --all CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ada86161fc8b rocket.chat:1.1.2 "node main.js" 37 seconds ago Up 7 seconds 0.0.0.0:3000->3000/tcp rocketchat 91bee011502c mongo:3.4.21 "docker-entrypoint..." 3 minutes ago Up 2 minutes 27017/tcp db 555eb5e21cd6 mongo:3.4.21 "docker-entrypoint..." 52 minutes ago Exited (0) 11 minutes ago rocketchat_db無事に起動しました。
ブラウザから「 http://192.168.10.100:3000 」にアクセスしてみます。
…が、応答が返りません。
まだ問題が有るようです。Rocket.Chat側のログを確認します。
$ docker logs rocketchat ? server.js:207 System ? error ? +---------------------------------------------------------------------------+ ? | SERVER ERROR | ? +---------------------------------------------------------------------------+ ? | | ? | Rocket.Chat Version: 1.1.2 | ? | NodeJS Version: 8.11.4 - x64 | ? | MongoDB Version: 3.4.21 | ? | MongoDB Engine: wiredTiger | ? | Platform: linux | ? | Process Port: 3000 | ? | Site URL: http://192.168.10.100 | ? | ReplicaSet OpLog: Disabled | ? | Commit Hash: aece97e1a0 | ? | Commit Branch: HEAD | ? | | ? | OPLOG / REPLICASET IS REQUIRED TO RUN ROCKET.CHAT, MORE INFORMATION AT: | ? | https://go.rocket.chat/i/oplog-required | ? | | ? +---------------------------------------------------------------------------+カッコいいログが出ていました。
OPLOG / REPLICASET IS REQUIRED TO RUN ROCKET.CHAT, MORE INFORMATION AT:これが怪しそうです。
エラーダイアログに記載されたURLを確認します。
https://rocket.chat/docs/installation/manual-installation/mongo-replicas/Rocket.Chat uses the MongoDB replica set to improve performance via Meteor Oplog tailing.
replica setが必須なようです。
--replSet rs1
を指定することでmongoDBをreplica setされた状態で起動します。Start the MongoDB shell and initiate the replica set:
mongoDBにログインし、replica setを初期化する必要があるようです。
このあたりはmongoDBのマニュアルを見ると書いてあります。The output of the command should look like this:
Note the “ok” value should be 1. Any other value, i.e. 93, means something is wrong.okの値が
1
になれば大丈夫だそうです。Reconfigure and restart Rocket.Chat service
After you configured replica set, you MUST add the MONGO_OPLOG_URL environment variable to the service definition and restart Rocket.Chat server.replica setを準備したあとはRocket.Chat側に
環境変数MONGO_OPLOG_URL
を設定する必要があるとのことです。
MONGO_OPELOG_URLの設定は以下のとおりのようです。MONGO_OPLOG_URL=mongodb://localhost:27017/local?replSet=rs01
localhost
はmongoDBのことのようなのでrocketchat_dbとします。
もちろんdb
でも良いです。まずはRocket.ChatとmongoDBを一度削除します。
$ docker container stop rocketchat $ docker container stop rocketchat_db $ docker container rm rocketchat $ docker container rm rocketchat_db $ rm -rf /var/data/rocketchat_db/*続いてDBをrpelica setを有効にして起動します。
$ docker container create \ --name rocketchat_db \ --volume=/var/data/rocketchat_db:/data/db \ mongo:3.4.21 \ --smallfiles \ --wiredTigerCacheSizeGB 1.5 \ --replSet rs1 $ docker container start rocketchat_dbここでDBに接続しreplica setの初期化を行います。
しかし、ホストサーバにmongoが無いためクライアント接続ができません。しょうがないのでコンテナに
docker exec
で接続し、
コンテナ内からmongoDBに接続します。$ docker exec -it rocketchat_db /bin/bash root@161ebb19a7bd:/# mongo > rs.status() { "info" : "run rs.initiate(...) if not yet done for the set", "ok" : 0, "errmsg" : "no replset config has been received", "code" : 94, "codeName" : "NotYetInitialized" }
codeName:NotYetInitialized
は初期化されていないことを示しています。
ここでreplica setを初期化します。> rs.initiate() { "info2" : "no configuration specified. Using a default configuration for the set", "me" : "161ebb19a7bd:27017", "ok" : 1 }先に調べたとおり
ok:1
でしたので大丈夫そうです。rs1:SECONDARY> rs.status() { "set" : "rs1", "date" : ISODate("2019-06-19T07:06:28.872Z"), "myState" : 1, "term" : NumberLong(1), "syncingTo" : "", "syncSourceHost" : "", "syncSourceId" : -1, "heartbeatIntervalMillis" : NumberLong(2000), "optimes" : { "lastCommittedOpTime" : { "ts" : Timestamp(1560927987, 1), "t" : NumberLong(1) }, "appliedOpTime" : { "ts" : Timestamp(1560927987, 1), "t" : NumberLong(1) }, "durableOpTime" : { "ts" : Timestamp(1560927987, 1), "t" : NumberLong(1) } }, "members" : [ { "_id" : 0, "name" : "161ebb19a7bd:27017", "health" : 1, "state" : 1, "stateStr" : "PRIMARY", "uptime" : 1740, "optime" : { "ts" : Timestamp(1560927987, 1), "t" : NumberLong(1) }, "optimeDate" : ISODate("2019-06-19T07:06:27Z"), "syncingTo" : "", "syncSourceHost" : "", "syncSourceId" : -1, "infoMessage" : "could not find member to sync from", "electionTime" : Timestamp(1560927985, 2), "electionDate" : ISODate("2019-06-19T07:06:25Z"), "configVersion" : 1, "self" : true, "lastHeartbeatMessage" : "" } ], "ok" : 1 } > exit root@161ebb19a7bd:/# exit続いてRocket.Chatを起動します。
$ docker container create \ --name rocketchat \ -p 3000:3000 --link rocketchat_db:db \ -e ROOT_URL=http://192.168.10.100 \ -e MONGO_OPLOG_URL=mongodb://rocketchat_db:27017/local?replSet=rs1 \ rocket.chat:1.1.2 $ docker container start rocketchat $ docker container list --all CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES aead98b431c5 rocket.chat:1.1.2 "node main.js" About an hour ago Up About an hour 0.0.0.0:3000->3000/tcp rocketchat 9a507773cfe9 mongo:3.4.21 "docker-entrypoint..." About an hour ago Up About an hour 27017/tcp rocketchat_db無事にブラウザからアクセスできました。
念の為、Rocket.Chatのログも確認します。$ docker logs rocketchat ? +----------------------------------------------+ ? | SERVER RUNNING | ? +----------------------------------------------+ ? | | ? | Rocket.Chat Version: 1.1.2 | ? | NodeJS Version: 8.11.4 - x64 | ? | MongoDB Version: 3.4.21 | ? | MongoDB Engine: wiredTiger | ? | Platform: linux | ? | Process Port: 3000 | ? | Site URL: http://192.168.10.100 | ? | ReplicaSet OpLog: Enabled | ? | Commit Hash: aece97e1a0 | ? | Commit Branch: HEAD | ? | | ? +----------------------------------------------+無事に起動できました。
- 投稿日:2019-06-25T11:47:18+09:00
今日のdocker error: Error response from daemon: Bad response from Docker engine
macOS$docker rmi xxxxx
なかなか終わらない。
macOS$ docker rm yyyyy別のまどでついつい。
Mac OSのほかのアプリもぴったりとまった。
電源ボタンを長押ししてosを再起動。macOS$ docker images Error response from daemon: Bad response from Docker engine $ docker ps -a Error response from daemon: Bad response from Docker enginedocker が起動していないのかと画面の一番上のくじらわんをクリックしてみた。
念のためにrestart。
でも同じ。
$ ps -ax PID TTY TIME CMD 1 ?? 0:03.98 /sbin/launchd 41 ?? 0:00.70 /usr/libexec/UserEventAgent (System) 42 ?? 0:00.24 /usr/sbin/syslogd 44 ?? 0:00.17 /Applications/ESET Endpoint Antivirus.app/Contents/MacOS/esets_ctl 45 ?? 0:00.06 /System/Library/PrivateFrameworks/Uninstall.framework/Resources/uninstalld 46 ?? 0:01.49 /usr/libexec/kextd 47 ?? 0:01.75 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/Support/fseventsd 49 ?? 0:00.09 /System/Library/PrivateFrameworks/MediaRemote.framework/Support/mediaremoted 52 ?? 0:00.15 /System/Library/CoreServices/appleeventsd --server 53 ?? 0:00.74 /usr/libexec/configd 54 ?? 0:00.15 /System/Library/CoreServices/powerd.bundle/powerd 55 ?? 0:00.21 /usr/libexec/mobileassetd 60 ?? 0:00.43 /usr/libexec/logd 64 ?? 0:00.49 /usr/libexec/airportd 66 ?? 0:00.25 /usr/libexec/warmd 67 ?? 0:02.93 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Support/mds 72 ?? 0:00.03 /System/Library/CoreServices/iconservicesd 73 ?? 0:00.06 /System/Library/CoreServices/iconservicesagent 75 ?? 0:00.15 /usr/libexec/diskarbitrationd 78 ?? 0:00.48 /usr/libexec/coreduetd 79 ?? 0:00.05 /usr/libexec/wdhelper 84 ?? 0:03.06 /usr/libexec/opendirectoryd 85 ?? 0:00.09 /usr/sbin/wirelessproxd 87 ?? 0:00.46 /System/Library/PrivateFrameworks/ApplePushService.framework/apsd 88 ?? 0:00.01 /Library/PrivilegedHelperTools/com.docker.vmnetd 89 ?? 0:00.02 /System/Library/PrivateFrameworks/Noticeboard.framework/Versions/A/Resources/nbstated 90 ?? 0:02.01 /System/Library/CoreServices/launchservicesd 91 ?? 0:00.04 /System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/Resources/usbmuxd -launchd 92 ?? 0:00.36 /usr/sbin/securityd -i 96 ?? 0:00.18 /usr/libexec/DuetHeuristic-BM 97 ?? 0:01.01 /usr/libexec/displaypolicyd -k 1 98 ?? 0:00.37 /usr/sbin/blued 99 ?? 0:00.03 autofsd 101 ?? 0:00.10 /System/Library/PrivateFrameworks/Heimdal.framework/Helpers/kdc 103 ?? 0:02.61 /Applications/ESET Remote Administrator Agent.app/Contents/MacOS/ERAAgent 104 ?? 0:00.11 /System/Library/PrivateFrameworks/GenerationalStorage.framework/Versions/A/Support/revisiond 105 ?? 0:02.08 /System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow console 106 ?? 0:00.04 /System/Library/CoreServices/logind 107 ?? 0:00.01 /usr/sbin/KernelEventAgent 110 ?? 0:02.70 /usr/libexec/hidd 111 ?? 0:00.34 /usr/libexec/corebrightnessd --launchd 112 ?? 0:00.17 /usr/libexec/AirPlayXPCHelper 113 ?? 0:01.60 /usr/libexec/amfid 114 ?? 0:00.94 /usr/sbin/notifyd 115 ?? 0:00.74 /usr/sbin/distnoted daemon 116 ?? 0:00.44 /System/Library/CoreServices/coreservicesd 117 ?? 0:00.19 /System/Library/Frameworks/Security.framework/Versions/A/XPCServices/authd.xpc/Contents/MacOS/authd 119 ?? 0:00.04 aslmanager 120 ?? 0:00.76 /usr/sbin/cfprefsd daemon 138 ?? 0:05.62 /usr/libexec/sandboxd 162 ?? 0:16.26 /System/Library/PrivateFrameworks/SkyLight.framework/Resources/WindowServer -daemon 165 ?? 0:00.24 /usr/sbin/coreaudiod 166 ?? 0:00.05 /System/Library/PrivateFrameworks/CoreSymbolication.framework/coresymbolicationd 169 ?? 0:00.03 /System/Library/Frameworks/PCSC.framework/Versions/A/XPCServices/com.apple.ctkpcscd.xpc/Contents/MacOS/com.apple.ctkpcscd 171 ?? 0:02.00 /usr/libexec/trustd 172 ?? 0:00.03 /System/Library/Frameworks/CryptoTokenKit.framework/ctkd -s 173 ?? 0:00.21 /usr/sbin/ocspd 174 ?? 0:00.25 /usr/sbin/mDNSResponder 189 ?? 0:00.01 /usr/libexec/watchdogd 196 ?? 0:00.02 /usr/sbin/systemstats --xpc 197 ?? 0:00.06 /System/Library/Frameworks/CoreAudio.framework/Versions/A/XPCServices/com.apple.audio.DriverHelper.xpc/Contents/MacOS/com.apple.audio.DriverHelper 199 ?? 0:00.07 /System/Library/PrivateFrameworks/WirelessDiagnostics.framework/Support/awdd 200 ?? 0:00.19 /usr/libexec/locationd 203 ?? 0:00.25 /usr/libexec/symptomsd 204 ?? 0:00.33 /usr/libexec/lsd runAsRoot 206 ?? 0:00.08 /usr/sbin/mDNSResponderHelper 208 ?? 0:00.07 /System/Library/PrivateFrameworks/AmbientDisplay.framework/Versions/A/XPCServices/com.apple.AmbientDisplayAgent.xpc/Contents/MacOS/com.apple.AmbientDisplayAgent 210 ?? 0:00.05 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/CVMServer 211 ?? 0:00.02 /System/Library/CoreServices/CrashReporterSupportHelper server-init 214 ?? 0:00.16 /System/Library/Frameworks/Security.framework/Versions/A/XPCServices/com.apple.CodeSigningHelper.xpc/Contents/MacOS/com.apple.CodeSigningHelper 228 ?? 0:00.20 /usr/libexec/nsurlsessiond --privileged 229 ?? 0:00.07 /usr/libexec/nehelper 230 ?? 0:00.06 /usr/libexec/usbd 231 ?? 0:00.02 /usr/libexec/thermald 233 ?? 0:00.02 /System/Library/CryptoTokenKit/com.apple.ifdreader.slotd/Contents/MacOS/com.apple.ifdreader 234 ?? 0:00.27 /Applications/.esets/Contents/MacOS/esets_daemon 235 ?? 0:25.40 /Applications/.esets/Contents/MacOS/esets_daemon --scan-process 236 ?? 0:00.06 /usr/libexec/securityd_service 238 ?? 0:00.07 /System/Library/CoreServices/sharedfilelistd --enable-legacy-services 240 ?? 0:00.84 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mds_stores 245 ?? 0:03.13 /System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/XPCServices/com.apple.PerformanceAnalysis.animationperfd.xpc/Contents/MacOS/com.apple.PerformanceAnalysis.animationperfd 246 ?? 0:00.02 /System/Library/Frameworks/CryptoTokenKit.framework/ctkahp.bundle/Contents/MacOS/ctkahp -d 247 ?? 0:00.07 /usr/libexec/secinitd 250 ?? 0:00.06 /usr/libexec/findmydeviced 251 ?? 0:00.25 /usr/sbin/spindump 252 ?? 0:00.04 /System/Library/CoreServices/SubmitDiagInfo server-init 253 ?? 0:00.07 /usr/sbin/systemsoundserverd 254 ?? 0:00.03 /System/Library/PrivateFrameworks/TCC.framework/Resources/tccd system 255 ?? 0:00.02 /usr/libexec/InternetSharing 257 ?? 0:00.01 /usr/libexec/smd 258 ?? 0:00.04 /usr/sbin/netbiosd 259 ?? 0:00.06 sysmond 261 ?? 0:00.03 /System/Library/PrivateFrameworks/AccountPolicy.framework/XPCServices/com.apple.AccountPolicyHelper.xpc/Contents/MacOS/com.apple.AccountPolicyHelper 263 ?? 0:00.04 /System/Library/Frameworks/LocalAuthentication.framework/Support/coreauthd 265 ?? 0:00.03 /usr/libexec/nsurlstoraged 271 ?? 0:00.05 /Applications/.esets/Contents/MacOS/esets_kac 283 ?? 0:00.03 /Applications/.esets/Contents/MacOS/esets_fcor 284 ?? 0:00.05 /Applications/.esets/Contents/MacOS/esets_mac 285 ?? 0:04.19 /Applications/.esets/Contents/MacOS/esets_proxy 311 ?? 0:17.39 /System/Library/CoreServices/Software Update.app/Contents/Resources/softwareupdated 312 ?? 0:00.04 /System/Library/PrivateFrameworks/SoftwareUpdate.framework/Resources/suhelperd 320 ?? 0:00.06 /usr/sbin/ntpd -c /private/etc/ntp-restrict.conf -n -g -p /var/run/ntpd.pid -f /var/db/ntp.drift 321 ?? 0:10.95 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker-scan -c MDSSyncScanWorker -m com.apple.metadata.mds.scan 331 ?? 0:00.81 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker-sizing -c MDSSizingWorker -m com.apple.mdworker.sizing 332 ?? 0:00.79 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker-sizing -c MDSSizingWorker -m com.apple.mdworker.sizing 333 ?? 0:00.76 /usr/sbin/cfprefsd agent 334 ?? 0:00.46 /usr/libexec/lsd 335 ?? 0:00.11 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker-sizing -c MDSSizingWorker -m com.apple.mdworker.sizing 336 ?? 0:00.02 /usr/sbin/cfprefsd agent 337 ?? 0:00.04 /usr/libexec/lsd 342 ?? 0:00.01 /System/Library/Frameworks/GSS.framework/Helpers/com.apple.GSSCred 345 ?? 0:00.49 /usr/libexec/UserEventAgent (Aqua) 347 ?? 0:02.47 /usr/sbin/distnoted agent 349 ?? 0:00.31 /System/Library/Frameworks/CoreTelephony.framework/Support/CommCenter -L 350 ?? 0:01.20 /usr/libexec/trustd --agent 351 ?? 0:03.01 /Applications/Safari.app/Contents/MacOS/Safari -psn_0_53261 352 ?? 0:00.24 /System/Library/CoreServices/sharedfilelistd 354 ?? 0:00.09 /usr/libexec/secd 355 ?? 0:04.97 /Applications/Microsoft Word.app/Contents/MacOS/Microsoft Word -psn_0_57358 356 ?? 0:00.31 /System/Library/PrivateFrameworks/TelephonyUtilities.framework/callservicesd 357 ?? 0:00.03 /usr/sbin/WirelessRadioManagerd 358 ?? 0:01.81 /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal -psn_0_61455 359 ?? 0:00.20 /System/Library/PrivateFrameworks/IDS.framework/identityservicesd.app/Contents/MacOS/identityservicesd 360 ?? 0:00.12 /System/Library/PrivateFrameworks/IMCore.framework/imagent.app/Contents/MacOS/imagent 361 ?? 0:00.17 /System/Library/PrivateFrameworks/TCC.framework/Resources/tccd 364 ?? 0:00.19 /System/Library/Frameworks/Accounts.framework/Versions/A/Support/accountsd 365 ?? 0:02.62 /Applications/Adobe Acrobat Reader DC.app/Contents/MacOS/AdobeReader -psn_0_69649 367 ?? 0:00.07 /System/Library/PrivateFrameworks/IMDPersistence.framework/XPCServices/IMDPersistenceAgent.xpc/Contents/MacOS/IMDPersistenceAgent 368 ?? 0:06.54 /Applications/Microsoft PowerPoint.app/Contents/MacOS/Microsoft PowerPoint -psn_0_73746 369 ?? 0:00.61 /Applications/System Preferences.app/Contents/MacOS/System Preferences -psn_0_77843 372 ?? 0:00.32 /usr/sbin/usernoted 373 ?? 0:00.46 /Applications/Calculator.app/Contents/MacOS/Calculator -psn_0_86037 374 ?? 0:00.08 /System/Library/Frameworks/AddressBook.framework/Executables/ContactsAccountsService 375 ?? 0:00.03 /System/Library/Frameworks/Security.framework/Versions/A/Resources/KeychainSyncingOverIDSProxy.bundle/Contents/MacOS/KeychainSyncingOverIDSProxy 376 ?? 0:00.03 /System/Library/Frameworks/Security.framework/Versions/A/Resources/CloudKeychainProxy.bundle/Contents/MacOS/CloudKeychainProxy 378 ?? 0:00.51 /usr/libexec/secinitd 379 ?? 0:00.07 /System/Library/PrivateFrameworks/IMFoundation.framework/XPCServices/IMRemoteURLConnectionAgent.xpc/Contents/MacOS/IMRemoteURLConnectionAgent 381 ?? 0:00.45 /usr/libexec/nsurlstoraged 383 ?? 0:00.09 /usr/libexec/fmfd 384 ?? 0:02.88 /Applications/Utilities/Keychain Access.app/Contents/MacOS/Keychain Access -psn_0_102425 385 ?? 0:00.09 /System/Library/PrivateFrameworks/UserActivity.framework/Agents/useractivityd 386 ?? 0:00.08 /System/Library/PrivateFrameworks/AOSKit.framework/Versions/A/XPCServices/com.apple.iCloudHelper.xpc/Contents/MacOS/com.apple.iCloudHelper 387 ?? 0:00.35 /usr/libexec/sharingd 388 ?? 0:00.02 /System/Library/PrivateFrameworks/IMFoundation.framework/XPCServices/IMRemoteURLConnectionAgent.xpc/Contents/MacOS/IMRemoteURLConnectionAgent 390 ?? 0:00.01 /usr/libexec/taskgated -s 391 ?? 0:01.66 /Applications/TextEdit.app/Contents/MacOS/TextEdit -psn_0_114716 392 ?? 0:03.29 /System/Library/CoreServices/Dock.app/Contents/MacOS/Dock 394 ?? 0:00.80 /System/Library/CoreServices/SystemUIServer.app/Contents/MacOS/SystemUIServer 395 ?? 0:01.18 /System/Library/CoreServices/Finder.app/Contents/MacOS/Finder 396 ?? 0:00.04 /usr/libexec/pboard 399 ?? 0:00.41 /usr/libexec/nsurlsessiond 400 ?? 0:00.56 /Applications/Epson Software/Event Manager.app/Contents/Resources/Assistants/Event Manager/EEventManager.app/Contents/MacOS/EEventManager 401 ?? 0:00.14 /usr/libexec/networkserviceproxy 403 ?? 0:00.90 /System/Library/PrivateFrameworks/CalendarAgent.framework/Executables/CalendarAgent 405 ?? 0:02.01 /System/Library/Frameworks/ApplicationServices.framework/Frameworks/ATS.framework/Support/fontd 407 ?? 0:00.02 /System/Library/PrivateFrameworks/CoreFollowUp.framework/Versions/A/Support/followupd 408 ?? 0:00.07 /System/Library/PrivateFrameworks/PhotoAnalysis.framework/Versions/A/Support/photoanalysisd 409 ?? 0:00.35 /System/Library/CoreServices/SafariSupport.bundle/Contents/MacOS/SafariBookmarksSyncAgent 411 ?? 0:00.09 /System/Library/PrivateFrameworks/CloudDocsDaemon.framework/Versions/A/Support/bird 412 ?? 0:00.17 /System/Library/PrivateFrameworks/CacheDelete.framework/deleted 415 ?? 0:00.03 /System/Library/Frameworks/LocalAuthentication.framework/Support/coreauthd 419 ?? 0:00.23 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker-bundle -c MDSImporterBundleFinder -m com.apple.mdworker.bundles 420 ?? 0:00.23 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker-bundle -c MDSImporterBundleFinder -m com.apple.mdworker.bundles 421 ?? 0:00.22 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker-bundle -c MDSImporterBundleFinder -m com.apple.mdworker.bundles 422 ?? 0:00.62 /usr/libexec/pkd 423 ?? 0:00.18 /System/Library/CoreServices/iconservicesagent 424 ?? 0:00.02 /System/Library/Frameworks/CryptoTokenKit.framework/ctkahp.bundle/Contents/MacOS/ctkahp 425 ?? 0:00.86 /System/Library/CoreServices/Spotlight.app/Contents/MacOS/Spotlight 427 ?? 0:00.03 /System/Library/Frameworks/CryptoTokenKit.framework/ctkd -tw 429 ?? 0:00.06 /usr/libexec/AssetCache/AssetCache 430 ?? 0:00.04 /System/Library/CoreServices/backupd.bundle/Contents/Resources/TMCacheDelete 431 ?? 0:00.04 /System/Library/PrivateFrameworks/GeoServices.framework/geodMachServiceBridge 432 ?? 0:00.03 /System/Library/PrivateFrameworks/PackageKit.framework/Resources/installd 433 ?? 0:00.24 /System/Library/CoreServices/cloudphotosd.app/Contents/MacOS/cloudphotosd 434 ?? 0:00.10 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/storedownloadd 435 ?? 0:00.03 /System/Library/PrivateFrameworks/PackageKit.framework/Resources/system_installd 436 ?? 0:00.03 /System/Library/PrivateFrameworks/QuickLookThumbnailing.framework/Support/com.apple.quicklook.ThumbnailsAgent 437 ?? 0:00.34 /System/Library/PrivateFrameworks/CalendarNotification.framework/Versions/A/XPCServices/CalNCService.xpc/Contents/MacOS/CalNCService 439 ?? 0:00.07 /usr/libexec/swcd 440 ?? 0:00.03 /usr/libexec/trustd --agent 443 ?? 0:00.68 /System/Library/StagedFrameworks/Safari/SafariShared.framework/Versions/A/XPCServices/com.apple.Safari.History.xpc/Contents/MacOS/com.apple.Safari.History 444 ?? 0:00.35 /System/Library/PrivateFrameworks/CloudKitDaemon.framework/Support/cloudd 446 ?? 0:00.22 /System/Library/PrivateFrameworks/CoreParsec.framework/parsecd 448 ?? 0:00.14 /System/Library/CoreServices/CoreServicesUIAgent.app/Contents/MacOS/CoreServicesUIAgent 449 ?? 0:00.62 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/storeassetd 450 ?? 0:00.03 /usr/libexec/trustd --agent 452 ?? 0:00.27 /System/Library/CoreServices/Dock.app/Contents/XPCServices/com.apple.dock.extra.xpc/Contents/MacOS/com.apple.dock.extra 453 ?? 0:00.55 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/storeaccountd 454 ?? 0:00.17 /System/Library/PrivateFrameworks/GeoServices.framework/Versions/A/XPCServices/com.apple.geod.xpc/Contents/MacOS/com.apple.geod 457 ?? 0:00.08 /System/Library/CoreServices/pbs 458 ?? 0:00.06 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/storelegacy 459 ?? 0:00.09 /usr/libexec/videosubscriptionsd 460 ?? 0:00.04 /usr/sbin/filecoordinationd 463 ?? 0:00.08 /System/Library/PrivateFrameworks/CloudPhotoServices.framework/Versions/A/Frameworks/CloudPhotosConfigurationXPC.framework/Versions/A/XPCServices/com.apple.CloudPhotosConfiguration.xpc/Contents/M 464 ?? 0:00.09 /System/Library/PrivateFrameworks/AssistantServices.framework/assistantd 466 ?? 0:00.12 /System/Library/CoreServices/FolderActionsDispatcher.app/Contents/MacOS/FolderActionsDispatcher 468 ?? 0:00.02 /usr/libexec/spindump_agent 471 ?? 0:00.03 /System/Library/CoreServices/SocialPushAgent.app/Contents/MacOS/SocialPushAgent 474 ?? 0:00.60 /Library/Printers/Canon/CUPS_SFP/BackGrounder/Canon CUPSSFP BackGrounder.app/Contents/MacOS/Canon CUPSSFP BackGrounder 476 ?? 0:05.92 /Library/Application Support/EPSON/Scanner/ScannerMonitor/Epson Scanner Monitor.app/Contents/MacOS/Epson Scanner Monitor 477 ?? 0:00.78 /System/Library/CoreServices/NotificationCenter.app/Contents/MacOS/NotificationCenter 478 ?? 0:00.12 /System/Library/Frameworks/InputMethodKit.framework/Resources/imklaunchagent 480 ?? 0:00.26 /System/Library/Image Capture/Support/icdd 481 ?? 0:00.16 /Library/Printers/Brother/Utilities/Server/LOGINserver.app/Contents/MacOS/LOGINserver 482 ?? 0:00.11 /System/Library/CoreServices/AppleIDAuthAgent 484 ?? 0:00.11 /Applications/Epson Software/Epson Low Ink Reminder.app/Contents/EpsonLowInkReminderAgent.app/Contents/MacOS/EpsonLowInkReminderAgent 487 ?? 0:00.04 /System/Library/PrivateFrameworks/AskPermission.framework/Versions/A/Resources/askpermissiond 488 ?? 0:00.14 /System/Library/CoreServices/AirPlayUIAgent.app/Contents/MacOS/AirPlayUIAgent --launchd 489 ?? 0:00.09 /System/Library/CoreServices/cloudpaird 491 ?? 0:00.13 /System/Library/PrivateFrameworks/Noticeboard.framework/Versions/A/Resources/nbagent.app/Contents/MacOS/nbagent 493 ?? 0:00.12 /System/Library/CoreServices/WiFiAgent.app/Contents/MacOS/WiFiAgent 494 ?? 0:00.13 /System/Library/CoreServices/diagnostics_agent 495 ?? 0:00.19 /System/Library/PrivateFrameworks/PassKitCore.framework/passd 497 ?? 0:00.22 /System/Library/PrivateFrameworks/MessagesKit.framework/Resources/soagent.app/Contents/MacOS/soagent 501 ?? 0:00.12 /System/Library/CoreServices/Menu Extras/TextInput.menu/Contents/SharedSupport/TISwitcher.app/Contents/MacOS/TISwitcher 502 ?? 0:00.01 /System/Library/PrivateFrameworks/InstallerDiagnostics.framework/Versions/A/Resources/installerdiagd 508 ?? 0:00.12 /System/Library/PrivateFrameworks/AuthKit.framework/Versions/A/Support/akd 510 ?? 0:00.06 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/XPCServices/com.apple.CommerceKit.TransactionService.xpc/Contents/MacOS/com.apple.CommerceKit.TransactionService 511 ?? 0:00.05 /System/Library/CoreServices/mapspushd 513 ?? 0:00.06 /System/Library/PrivateFrameworks/CoreWLANKit.framework/Versions/A/XPCServices/WiFiProxy.xpc/Contents/MacOS/WiFiProxy 514 ?? 0:00.05 /System/Library/PrivateFrameworks/CallHistory.framework/Support/CallHistoryPluginHelper 517 ?? 0:00.04 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/maspushagent 518 ?? 0:00.07 /usr/libexec/keyboardservicesd 520 ?? 0:00.15 /usr/sbin/cupsd -l 521 ?? 0:00.23 /System/Library/CoreServices/ScopedBookmarkAgent 522 ?? 0:00.05 /System/Library/PrivateFrameworks/PhotoLibraryPrivate.framework/Versions/A/Support/photolibraryd 523 ?? 0:00.07 /Applications/iTunes.app/Contents/MacOS/iTunesHelper.app/Contents/MacOS/iTunesHelper 525 ?? 0:00.20 /Applications/VMware Fusion.app/Contents/Library/VMware Fusion Start Menu.app/Contents/MacOS/VMware Fusion Start Menu 527 ?? 0:00.41 /System/Library/StagedFrameworks/Safari/WebKit.framework/Versions/A/XPCServices/com.apple.WebKit.WebContent.xpc/Contents/MacOS/com.apple.WebKit.WebContent 528 ?? 0:00.41 /System/Library/StagedFrameworks/Safari/WebKit.framework/Versions/A/XPCServices/com.apple.WebKit.Networking.xpc/Contents/MacOS/com.apple.WebKit.Networking 530 ?? 0:00.05 /usr/libexec/WiFiVelocityAgent 531 ?? 0:00.06 /usr/libexec/wifivelocityd 533 ?? 0:00.93 /System/Library/Frameworks/AppKit.framework/Versions/C/XPCServices/com.apple.appkit.xpc.openAndSavePanelService.xpc/Contents/MacOS/com.apple.appkit.xpc.openAndSavePanelService 534 ?? 0:00.34 /Applications/.esets/Contents/MacOS/esets_sci --scheduler --priority=normal --startup -- /etc /sbin /usr/sbin /bin /usr/bin 536 ?? 0:00.08 /System/Library/PrivateFrameworks/ViewBridge.framework/Versions/A/XPCServices/ViewBridgeAuxiliary.xpc/Contents/MacOS/ViewBridgeAuxiliary 538 ?? 0:00.08 /System/Library/PrivateFrameworks/PrintingPrivate.framework/Versions/A/PrintUITool 542 ?? 0:00.05 /Users/administrator/Library/Application Support/Google/Android File Transfer/Android File Transfer Agent.app/Contents/MacOS/Android File Transfer Agent 543 ?? 0:00.10 /Library/Printers/Brother/Utilities/Server/USBserver.app/Contents/MacOS/USBserver 544 ?? 0:00.05 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/XPCServices/com.apple.CommerceKit.TransactionService.xpc/Contents/MacOS/com.apple.CommerceKit.TransactionService 545 ?? 0:00.01 /System/Library/PrivateFrameworks/StoreXPCServices.framework/Versions/A/XPCServices/com.apple.appstore.PluginXPCService.xpc/Contents/MacOS/com.apple.appstore.PluginXPCService 548 ?? 0:00.11 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesisServer.app/Contents/MacOS/SpeechSynthesisServer launchd 549 ?? 0:00.04 /System/Library/Frameworks/ApplicationServices.framework/Frameworks/PrintCore.framework/Versions/A/printtool agent 551 ?? 0:00.03 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/XPCServices/com.apple.hiservices-xpcservice.xpc/Contents/MacOS/com.apple.hiservices- 552 ?? 0:00.16 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/storeuid.app/Contents/MacOS/storeuid 553 ?? 0:00.10 /Library/Printers/Brother/Utilities/Server/NETserver.app/Contents/MacOS/NETserver 558 ?? 0:00.06 /System/Library/PrivateFrameworks/ContactsAgent.framework/Executables/ContactsAgent 559 ?? 0:00.08 /System/Library/Frameworks/Metal.framework/Versions/A/XPCServices/MTLCompilerService.xpc/Contents/MacOS/MTLCompilerService 565 ?? 0:01.74 /System/Library/Services/AppleSpell.service/Contents/MacOS/AppleSpell 571 ?? 0:00.49 /System/Library/PreferencePanes/Sound.prefPane/Contents/XPCServices/com.apple.preference.sound.remoteservice.xpc/Contents/MacOS/com.apple.preference.sound.remoteservice 574 ?? 0:00.03 /System/Library/CoreServices/Software Update.app/Contents/Resources/softwareupdate_notify_agent 590 ?? 0:00.08 /System/Library/StagedFrameworks/Safari/SafariShared.framework/Versions/A/XPCServices/com.apple.Safari.ImageDecoder.xpc/Contents/MacOS/com.apple.Safari.ImageDecoder 591 ?? 0:00.05 /System/Library/Frameworks/Metal.framework/Versions/A/XPCServices/MTLCompilerService.xpc/Contents/MacOS/MTLCompilerService 635 ?? 0:00.50 /System/Library/Input Methods/JapaneseIM.app/Contents/PlugIns/JapaneseIM.appex/Contents/MacOS/JapaneseIM 645 ?? 0:00.57 /Applications/Adobe Acrobat Reader DC.app/Contents/Frameworks/AdobeCrashReporter.framework/Versions/A/AdobeCRDaemon.app/Contents/MacOS/AdobeCRDaemon 365 AdobeReader 19.010.20098 /Applications/Ado 666 ?? 0:02.51 /Applications/Docker.app/Contents/MacOS/Docker 670 ?? 0:00.86 /Applications/Adobe Acrobat Reader DC.app/Contents/Helpers/AcroCEF/RdrCEF.app/Contents/MacOS/RdrCEF "/Applications/Adobe Acrobat Reader DC.app/Contents/Helpers/AcroCEF/RdrCEF.app" --locale=ja-jp 672 ?? 0:00.04 /usr/libexec/gamecontrollerd 674 ?? 0:00.36 /Applications/Microsoft Word.app/Contents/SharedSupport/Office365ServiceV2.app/Contents/MacOS/Office365ServiceV2 675 ?? 0:01.82 /Applications/Adobe Acrobat Reader DC.app/Contents/Frameworks/RdrCEF Helper.app/Contents/MacOS/RdrCEF Helper --type=renderer --disable-browser-side-navigation --disable-gpu-compositing --service- 677 ?? 0:00.08 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/storeinappd 683 ?? 0:03.38 /Users/administrator/Library/Application Support/Adobe/com.adobe.ARMDCHelper/Adobe Acrobat Updater.app/Contents/MacOS/Acrobat Updater -psn_0_335954 700 ?? 0:00.02 /usr/libexec/loginitemregisterd 702 ?? 0:00.07 /Applications/Docker.app/Contents/MacOS/com.docker.supervisor -watchdog fd:0 703 ?? 0:00.04 com.docker.osxfs serve --address fd:3 --connect vms/0/connect --control fd:4 --log-destination asl 704 ?? 0:00.23 com.docker.vpnkit --ethernet fd:3 --port vpnkit.port.sock --port hyperkit://:62373/./vms/0 --diagnostics fd:4 --pcap fd:5 --vsock-path vms/0/connect --host-names host.docker.internal,docker.for.m 705 ?? 0:00.18 com.docker.driver.amd64-linux -addr fd:3 -debug 711 ?? 0:00.00 (Acrobat Update H) 716 ?? 0:00.04 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/CVMCompiler 2 719 ?? 0:28.49 com.docker.hyperkit -A -u -F vms/0/hyperkit.pid -c 2 -m 2048M -s 0:0,hostbridge -s 31,lpc -s 1:0,virtio-vpnkit,path=vpnkit.eth.sock,uuid=3c4c03f6-0651-475f-a27e-9e373010a592 -U 11f6bb5c-ae3f-42b4 722 ?? 0:00.02 /System/Library/Frameworks/AudioToolbox.framework/XPCServices/com.apple.audio.SandboxHelper.xpc/Contents/MacOS/com.apple.audio.SandboxHelper 796 ?? 0:00.07 /usr/libexec/syspolicyd 798 ?? 0:00.21 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker -c MDSImporterWorker -m com.apple.mdworker.shared 799 ?? 0:00.08 /System/Library/PrivateFrameworks/CoreSuggestions.framework/Versions/A/Support/suggestd 721 ttys001 0:00.03 login -pf administrator 723 ttys001 0:00.02 -bash 801 ttys001 0:00.01 ps -ax
- 投稿日:2019-06-25T11:47:18+09:00
docker(21) 今日のdocker error: Error response from daemon: Bad response from Docker engine
macOS$docker rmi xxxxx
なかなか終わらない。
macOS$ docker rm yyyyy別のまどでついつい。
Mac OSのほかのアプリもぴったりとまった。
電源ボタンを長押ししてosを再起動。macOS$ docker images Error response from daemon: Bad response from Docker engine $ docker ps -a Error response from daemon: Bad response from Docker enginedocker が起動していないのかと画面の一番上のくじらわんをクリックしてみた。
念のためにrestart。
でも同じ。
$ ps -ax PID TTY TIME CMD 1 ?? 0:03.98 /sbin/launchd 41 ?? 0:00.70 /usr/libexec/UserEventAgent (System) 42 ?? 0:00.24 /usr/sbin/syslogd 44 ?? 0:00.17 /Applications/ESET Endpoint Antivirus.app/Contents/MacOS/esets_ctl 45 ?? 0:00.06 /System/Library/PrivateFrameworks/Uninstall.framework/Resources/uninstalld 46 ?? 0:01.49 /usr/libexec/kextd 47 ?? 0:01.75 /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/Support/fseventsd 49 ?? 0:00.09 /System/Library/PrivateFrameworks/MediaRemote.framework/Support/mediaremoted 52 ?? 0:00.15 /System/Library/CoreServices/appleeventsd --server 53 ?? 0:00.74 /usr/libexec/configd 54 ?? 0:00.15 /System/Library/CoreServices/powerd.bundle/powerd 55 ?? 0:00.21 /usr/libexec/mobileassetd 60 ?? 0:00.43 /usr/libexec/logd 64 ?? 0:00.49 /usr/libexec/airportd 66 ?? 0:00.25 /usr/libexec/warmd 67 ?? 0:02.93 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Support/mds 72 ?? 0:00.03 /System/Library/CoreServices/iconservicesd 73 ?? 0:00.06 /System/Library/CoreServices/iconservicesagent 75 ?? 0:00.15 /usr/libexec/diskarbitrationd 78 ?? 0:00.48 /usr/libexec/coreduetd 79 ?? 0:00.05 /usr/libexec/wdhelper 84 ?? 0:03.06 /usr/libexec/opendirectoryd 85 ?? 0:00.09 /usr/sbin/wirelessproxd 87 ?? 0:00.46 /System/Library/PrivateFrameworks/ApplePushService.framework/apsd 88 ?? 0:00.01 /Library/PrivilegedHelperTools/com.docker.vmnetd 89 ?? 0:00.02 /System/Library/PrivateFrameworks/Noticeboard.framework/Versions/A/Resources/nbstated 90 ?? 0:02.01 /System/Library/CoreServices/launchservicesd 91 ?? 0:00.04 /System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/Resources/usbmuxd -launchd 92 ?? 0:00.36 /usr/sbin/securityd -i 96 ?? 0:00.18 /usr/libexec/DuetHeuristic-BM 97 ?? 0:01.01 /usr/libexec/displaypolicyd -k 1 98 ?? 0:00.37 /usr/sbin/blued 99 ?? 0:00.03 autofsd 101 ?? 0:00.10 /System/Library/PrivateFrameworks/Heimdal.framework/Helpers/kdc 103 ?? 0:02.61 /Applications/ESET Remote Administrator Agent.app/Contents/MacOS/ERAAgent 104 ?? 0:00.11 /System/Library/PrivateFrameworks/GenerationalStorage.framework/Versions/A/Support/revisiond 105 ?? 0:02.08 /System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow console 106 ?? 0:00.04 /System/Library/CoreServices/logind 107 ?? 0:00.01 /usr/sbin/KernelEventAgent 110 ?? 0:02.70 /usr/libexec/hidd 111 ?? 0:00.34 /usr/libexec/corebrightnessd --launchd 112 ?? 0:00.17 /usr/libexec/AirPlayXPCHelper 113 ?? 0:01.60 /usr/libexec/amfid 114 ?? 0:00.94 /usr/sbin/notifyd 115 ?? 0:00.74 /usr/sbin/distnoted daemon 116 ?? 0:00.44 /System/Library/CoreServices/coreservicesd 117 ?? 0:00.19 /System/Library/Frameworks/Security.framework/Versions/A/XPCServices/authd.xpc/Contents/MacOS/authd 119 ?? 0:00.04 aslmanager 120 ?? 0:00.76 /usr/sbin/cfprefsd daemon 138 ?? 0:05.62 /usr/libexec/sandboxd 162 ?? 0:16.26 /System/Library/PrivateFrameworks/SkyLight.framework/Resources/WindowServer -daemon 165 ?? 0:00.24 /usr/sbin/coreaudiod 166 ?? 0:00.05 /System/Library/PrivateFrameworks/CoreSymbolication.framework/coresymbolicationd 169 ?? 0:00.03 /System/Library/Frameworks/PCSC.framework/Versions/A/XPCServices/com.apple.ctkpcscd.xpc/Contents/MacOS/com.apple.ctkpcscd 171 ?? 0:02.00 /usr/libexec/trustd 172 ?? 0:00.03 /System/Library/Frameworks/CryptoTokenKit.framework/ctkd -s 173 ?? 0:00.21 /usr/sbin/ocspd 174 ?? 0:00.25 /usr/sbin/mDNSResponder 189 ?? 0:00.01 /usr/libexec/watchdogd 196 ?? 0:00.02 /usr/sbin/systemstats --xpc 197 ?? 0:00.06 /System/Library/Frameworks/CoreAudio.framework/Versions/A/XPCServices/com.apple.audio.DriverHelper.xpc/Contents/MacOS/com.apple.audio.DriverHelper 199 ?? 0:00.07 /System/Library/PrivateFrameworks/WirelessDiagnostics.framework/Support/awdd 200 ?? 0:00.19 /usr/libexec/locationd 203 ?? 0:00.25 /usr/libexec/symptomsd 204 ?? 0:00.33 /usr/libexec/lsd runAsRoot 206 ?? 0:00.08 /usr/sbin/mDNSResponderHelper 208 ?? 0:00.07 /System/Library/PrivateFrameworks/AmbientDisplay.framework/Versions/A/XPCServices/com.apple.AmbientDisplayAgent.xpc/Contents/MacOS/com.apple.AmbientDisplayAgent 210 ?? 0:00.05 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/CVMServer 211 ?? 0:00.02 /System/Library/CoreServices/CrashReporterSupportHelper server-init 214 ?? 0:00.16 /System/Library/Frameworks/Security.framework/Versions/A/XPCServices/com.apple.CodeSigningHelper.xpc/Contents/MacOS/com.apple.CodeSigningHelper 228 ?? 0:00.20 /usr/libexec/nsurlsessiond --privileged 229 ?? 0:00.07 /usr/libexec/nehelper 230 ?? 0:00.06 /usr/libexec/usbd 231 ?? 0:00.02 /usr/libexec/thermald 233 ?? 0:00.02 /System/Library/CryptoTokenKit/com.apple.ifdreader.slotd/Contents/MacOS/com.apple.ifdreader 234 ?? 0:00.27 /Applications/.esets/Contents/MacOS/esets_daemon 235 ?? 0:25.40 /Applications/.esets/Contents/MacOS/esets_daemon --scan-process 236 ?? 0:00.06 /usr/libexec/securityd_service 238 ?? 0:00.07 /System/Library/CoreServices/sharedfilelistd --enable-legacy-services 240 ?? 0:00.84 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mds_stores 245 ?? 0:03.13 /System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/XPCServices/com.apple.PerformanceAnalysis.animationperfd.xpc/Contents/MacOS/com.apple.PerformanceAnalysis.animationperfd 246 ?? 0:00.02 /System/Library/Frameworks/CryptoTokenKit.framework/ctkahp.bundle/Contents/MacOS/ctkahp -d 247 ?? 0:00.07 /usr/libexec/secinitd 250 ?? 0:00.06 /usr/libexec/findmydeviced 251 ?? 0:00.25 /usr/sbin/spindump 252 ?? 0:00.04 /System/Library/CoreServices/SubmitDiagInfo server-init 253 ?? 0:00.07 /usr/sbin/systemsoundserverd 254 ?? 0:00.03 /System/Library/PrivateFrameworks/TCC.framework/Resources/tccd system 255 ?? 0:00.02 /usr/libexec/InternetSharing 257 ?? 0:00.01 /usr/libexec/smd 258 ?? 0:00.04 /usr/sbin/netbiosd 259 ?? 0:00.06 sysmond 261 ?? 0:00.03 /System/Library/PrivateFrameworks/AccountPolicy.framework/XPCServices/com.apple.AccountPolicyHelper.xpc/Contents/MacOS/com.apple.AccountPolicyHelper 263 ?? 0:00.04 /System/Library/Frameworks/LocalAuthentication.framework/Support/coreauthd 265 ?? 0:00.03 /usr/libexec/nsurlstoraged 271 ?? 0:00.05 /Applications/.esets/Contents/MacOS/esets_kac 283 ?? 0:00.03 /Applications/.esets/Contents/MacOS/esets_fcor 284 ?? 0:00.05 /Applications/.esets/Contents/MacOS/esets_mac 285 ?? 0:04.19 /Applications/.esets/Contents/MacOS/esets_proxy 311 ?? 0:17.39 /System/Library/CoreServices/Software Update.app/Contents/Resources/softwareupdated 312 ?? 0:00.04 /System/Library/PrivateFrameworks/SoftwareUpdate.framework/Resources/suhelperd 320 ?? 0:00.06 /usr/sbin/ntpd -c /private/etc/ntp-restrict.conf -n -g -p /var/run/ntpd.pid -f /var/db/ntp.drift 321 ?? 0:10.95 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker-scan -c MDSSyncScanWorker -m com.apple.metadata.mds.scan 331 ?? 0:00.81 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker-sizing -c MDSSizingWorker -m com.apple.mdworker.sizing 332 ?? 0:00.79 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker-sizing -c MDSSizingWorker -m com.apple.mdworker.sizing 333 ?? 0:00.76 /usr/sbin/cfprefsd agent 334 ?? 0:00.46 /usr/libexec/lsd 335 ?? 0:00.11 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker-sizing -c MDSSizingWorker -m com.apple.mdworker.sizing 336 ?? 0:00.02 /usr/sbin/cfprefsd agent 337 ?? 0:00.04 /usr/libexec/lsd 342 ?? 0:00.01 /System/Library/Frameworks/GSS.framework/Helpers/com.apple.GSSCred 345 ?? 0:00.49 /usr/libexec/UserEventAgent (Aqua) 347 ?? 0:02.47 /usr/sbin/distnoted agent 349 ?? 0:00.31 /System/Library/Frameworks/CoreTelephony.framework/Support/CommCenter -L 350 ?? 0:01.20 /usr/libexec/trustd --agent 351 ?? 0:03.01 /Applications/Safari.app/Contents/MacOS/Safari -psn_0_53261 352 ?? 0:00.24 /System/Library/CoreServices/sharedfilelistd 354 ?? 0:00.09 /usr/libexec/secd 355 ?? 0:04.97 /Applications/Microsoft Word.app/Contents/MacOS/Microsoft Word -psn_0_57358 356 ?? 0:00.31 /System/Library/PrivateFrameworks/TelephonyUtilities.framework/callservicesd 357 ?? 0:00.03 /usr/sbin/WirelessRadioManagerd 358 ?? 0:01.81 /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal -psn_0_61455 359 ?? 0:00.20 /System/Library/PrivateFrameworks/IDS.framework/identityservicesd.app/Contents/MacOS/identityservicesd 360 ?? 0:00.12 /System/Library/PrivateFrameworks/IMCore.framework/imagent.app/Contents/MacOS/imagent 361 ?? 0:00.17 /System/Library/PrivateFrameworks/TCC.framework/Resources/tccd 364 ?? 0:00.19 /System/Library/Frameworks/Accounts.framework/Versions/A/Support/accountsd 365 ?? 0:02.62 /Applications/Adobe Acrobat Reader DC.app/Contents/MacOS/AdobeReader -psn_0_69649 367 ?? 0:00.07 /System/Library/PrivateFrameworks/IMDPersistence.framework/XPCServices/IMDPersistenceAgent.xpc/Contents/MacOS/IMDPersistenceAgent 368 ?? 0:06.54 /Applications/Microsoft PowerPoint.app/Contents/MacOS/Microsoft PowerPoint -psn_0_73746 369 ?? 0:00.61 /Applications/System Preferences.app/Contents/MacOS/System Preferences -psn_0_77843 372 ?? 0:00.32 /usr/sbin/usernoted 373 ?? 0:00.46 /Applications/Calculator.app/Contents/MacOS/Calculator -psn_0_86037 374 ?? 0:00.08 /System/Library/Frameworks/AddressBook.framework/Executables/ContactsAccountsService 375 ?? 0:00.03 /System/Library/Frameworks/Security.framework/Versions/A/Resources/KeychainSyncingOverIDSProxy.bundle/Contents/MacOS/KeychainSyncingOverIDSProxy 376 ?? 0:00.03 /System/Library/Frameworks/Security.framework/Versions/A/Resources/CloudKeychainProxy.bundle/Contents/MacOS/CloudKeychainProxy 378 ?? 0:00.51 /usr/libexec/secinitd 379 ?? 0:00.07 /System/Library/PrivateFrameworks/IMFoundation.framework/XPCServices/IMRemoteURLConnectionAgent.xpc/Contents/MacOS/IMRemoteURLConnectionAgent 381 ?? 0:00.45 /usr/libexec/nsurlstoraged 383 ?? 0:00.09 /usr/libexec/fmfd 384 ?? 0:02.88 /Applications/Utilities/Keychain Access.app/Contents/MacOS/Keychain Access -psn_0_102425 385 ?? 0:00.09 /System/Library/PrivateFrameworks/UserActivity.framework/Agents/useractivityd 386 ?? 0:00.08 /System/Library/PrivateFrameworks/AOSKit.framework/Versions/A/XPCServices/com.apple.iCloudHelper.xpc/Contents/MacOS/com.apple.iCloudHelper 387 ?? 0:00.35 /usr/libexec/sharingd 388 ?? 0:00.02 /System/Library/PrivateFrameworks/IMFoundation.framework/XPCServices/IMRemoteURLConnectionAgent.xpc/Contents/MacOS/IMRemoteURLConnectionAgent 390 ?? 0:00.01 /usr/libexec/taskgated -s 391 ?? 0:01.66 /Applications/TextEdit.app/Contents/MacOS/TextEdit -psn_0_114716 392 ?? 0:03.29 /System/Library/CoreServices/Dock.app/Contents/MacOS/Dock 394 ?? 0:00.80 /System/Library/CoreServices/SystemUIServer.app/Contents/MacOS/SystemUIServer 395 ?? 0:01.18 /System/Library/CoreServices/Finder.app/Contents/MacOS/Finder 396 ?? 0:00.04 /usr/libexec/pboard 399 ?? 0:00.41 /usr/libexec/nsurlsessiond 400 ?? 0:00.56 /Applications/Epson Software/Event Manager.app/Contents/Resources/Assistants/Event Manager/EEventManager.app/Contents/MacOS/EEventManager 401 ?? 0:00.14 /usr/libexec/networkserviceproxy 403 ?? 0:00.90 /System/Library/PrivateFrameworks/CalendarAgent.framework/Executables/CalendarAgent 405 ?? 0:02.01 /System/Library/Frameworks/ApplicationServices.framework/Frameworks/ATS.framework/Support/fontd 407 ?? 0:00.02 /System/Library/PrivateFrameworks/CoreFollowUp.framework/Versions/A/Support/followupd 408 ?? 0:00.07 /System/Library/PrivateFrameworks/PhotoAnalysis.framework/Versions/A/Support/photoanalysisd 409 ?? 0:00.35 /System/Library/CoreServices/SafariSupport.bundle/Contents/MacOS/SafariBookmarksSyncAgent 411 ?? 0:00.09 /System/Library/PrivateFrameworks/CloudDocsDaemon.framework/Versions/A/Support/bird 412 ?? 0:00.17 /System/Library/PrivateFrameworks/CacheDelete.framework/deleted 415 ?? 0:00.03 /System/Library/Frameworks/LocalAuthentication.framework/Support/coreauthd 419 ?? 0:00.23 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker-bundle -c MDSImporterBundleFinder -m com.apple.mdworker.bundles 420 ?? 0:00.23 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker-bundle -c MDSImporterBundleFinder -m com.apple.mdworker.bundles 421 ?? 0:00.22 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker-bundle -c MDSImporterBundleFinder -m com.apple.mdworker.bundles 422 ?? 0:00.62 /usr/libexec/pkd 423 ?? 0:00.18 /System/Library/CoreServices/iconservicesagent 424 ?? 0:00.02 /System/Library/Frameworks/CryptoTokenKit.framework/ctkahp.bundle/Contents/MacOS/ctkahp 425 ?? 0:00.86 /System/Library/CoreServices/Spotlight.app/Contents/MacOS/Spotlight 427 ?? 0:00.03 /System/Library/Frameworks/CryptoTokenKit.framework/ctkd -tw 429 ?? 0:00.06 /usr/libexec/AssetCache/AssetCache 430 ?? 0:00.04 /System/Library/CoreServices/backupd.bundle/Contents/Resources/TMCacheDelete 431 ?? 0:00.04 /System/Library/PrivateFrameworks/GeoServices.framework/geodMachServiceBridge 432 ?? 0:00.03 /System/Library/PrivateFrameworks/PackageKit.framework/Resources/installd 433 ?? 0:00.24 /System/Library/CoreServices/cloudphotosd.app/Contents/MacOS/cloudphotosd 434 ?? 0:00.10 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/storedownloadd 435 ?? 0:00.03 /System/Library/PrivateFrameworks/PackageKit.framework/Resources/system_installd 436 ?? 0:00.03 /System/Library/PrivateFrameworks/QuickLookThumbnailing.framework/Support/com.apple.quicklook.ThumbnailsAgent 437 ?? 0:00.34 /System/Library/PrivateFrameworks/CalendarNotification.framework/Versions/A/XPCServices/CalNCService.xpc/Contents/MacOS/CalNCService 439 ?? 0:00.07 /usr/libexec/swcd 440 ?? 0:00.03 /usr/libexec/trustd --agent 443 ?? 0:00.68 /System/Library/StagedFrameworks/Safari/SafariShared.framework/Versions/A/XPCServices/com.apple.Safari.History.xpc/Contents/MacOS/com.apple.Safari.History 444 ?? 0:00.35 /System/Library/PrivateFrameworks/CloudKitDaemon.framework/Support/cloudd 446 ?? 0:00.22 /System/Library/PrivateFrameworks/CoreParsec.framework/parsecd 448 ?? 0:00.14 /System/Library/CoreServices/CoreServicesUIAgent.app/Contents/MacOS/CoreServicesUIAgent 449 ?? 0:00.62 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/storeassetd 450 ?? 0:00.03 /usr/libexec/trustd --agent 452 ?? 0:00.27 /System/Library/CoreServices/Dock.app/Contents/XPCServices/com.apple.dock.extra.xpc/Contents/MacOS/com.apple.dock.extra 453 ?? 0:00.55 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/storeaccountd 454 ?? 0:00.17 /System/Library/PrivateFrameworks/GeoServices.framework/Versions/A/XPCServices/com.apple.geod.xpc/Contents/MacOS/com.apple.geod 457 ?? 0:00.08 /System/Library/CoreServices/pbs 458 ?? 0:00.06 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/storelegacy 459 ?? 0:00.09 /usr/libexec/videosubscriptionsd 460 ?? 0:00.04 /usr/sbin/filecoordinationd 463 ?? 0:00.08 /System/Library/PrivateFrameworks/CloudPhotoServices.framework/Versions/A/Frameworks/CloudPhotosConfigurationXPC.framework/Versions/A/XPCServices/com.apple.CloudPhotosConfiguration.xpc/Contents/M 464 ?? 0:00.09 /System/Library/PrivateFrameworks/AssistantServices.framework/assistantd 466 ?? 0:00.12 /System/Library/CoreServices/FolderActionsDispatcher.app/Contents/MacOS/FolderActionsDispatcher 468 ?? 0:00.02 /usr/libexec/spindump_agent 471 ?? 0:00.03 /System/Library/CoreServices/SocialPushAgent.app/Contents/MacOS/SocialPushAgent 474 ?? 0:00.60 /Library/Printers/Canon/CUPS_SFP/BackGrounder/Canon CUPSSFP BackGrounder.app/Contents/MacOS/Canon CUPSSFP BackGrounder 476 ?? 0:05.92 /Library/Application Support/EPSON/Scanner/ScannerMonitor/Epson Scanner Monitor.app/Contents/MacOS/Epson Scanner Monitor 477 ?? 0:00.78 /System/Library/CoreServices/NotificationCenter.app/Contents/MacOS/NotificationCenter 478 ?? 0:00.12 /System/Library/Frameworks/InputMethodKit.framework/Resources/imklaunchagent 480 ?? 0:00.26 /System/Library/Image Capture/Support/icdd 481 ?? 0:00.16 /Library/Printers/Brother/Utilities/Server/LOGINserver.app/Contents/MacOS/LOGINserver 482 ?? 0:00.11 /System/Library/CoreServices/AppleIDAuthAgent 484 ?? 0:00.11 /Applications/Epson Software/Epson Low Ink Reminder.app/Contents/EpsonLowInkReminderAgent.app/Contents/MacOS/EpsonLowInkReminderAgent 487 ?? 0:00.04 /System/Library/PrivateFrameworks/AskPermission.framework/Versions/A/Resources/askpermissiond 488 ?? 0:00.14 /System/Library/CoreServices/AirPlayUIAgent.app/Contents/MacOS/AirPlayUIAgent --launchd 489 ?? 0:00.09 /System/Library/CoreServices/cloudpaird 491 ?? 0:00.13 /System/Library/PrivateFrameworks/Noticeboard.framework/Versions/A/Resources/nbagent.app/Contents/MacOS/nbagent 493 ?? 0:00.12 /System/Library/CoreServices/WiFiAgent.app/Contents/MacOS/WiFiAgent 494 ?? 0:00.13 /System/Library/CoreServices/diagnostics_agent 495 ?? 0:00.19 /System/Library/PrivateFrameworks/PassKitCore.framework/passd 497 ?? 0:00.22 /System/Library/PrivateFrameworks/MessagesKit.framework/Resources/soagent.app/Contents/MacOS/soagent 501 ?? 0:00.12 /System/Library/CoreServices/Menu Extras/TextInput.menu/Contents/SharedSupport/TISwitcher.app/Contents/MacOS/TISwitcher 502 ?? 0:00.01 /System/Library/PrivateFrameworks/InstallerDiagnostics.framework/Versions/A/Resources/installerdiagd 508 ?? 0:00.12 /System/Library/PrivateFrameworks/AuthKit.framework/Versions/A/Support/akd 510 ?? 0:00.06 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/XPCServices/com.apple.CommerceKit.TransactionService.xpc/Contents/MacOS/com.apple.CommerceKit.TransactionService 511 ?? 0:00.05 /System/Library/CoreServices/mapspushd 513 ?? 0:00.06 /System/Library/PrivateFrameworks/CoreWLANKit.framework/Versions/A/XPCServices/WiFiProxy.xpc/Contents/MacOS/WiFiProxy 514 ?? 0:00.05 /System/Library/PrivateFrameworks/CallHistory.framework/Support/CallHistoryPluginHelper 517 ?? 0:00.04 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/maspushagent 518 ?? 0:00.07 /usr/libexec/keyboardservicesd 520 ?? 0:00.15 /usr/sbin/cupsd -l 521 ?? 0:00.23 /System/Library/CoreServices/ScopedBookmarkAgent 522 ?? 0:00.05 /System/Library/PrivateFrameworks/PhotoLibraryPrivate.framework/Versions/A/Support/photolibraryd 523 ?? 0:00.07 /Applications/iTunes.app/Contents/MacOS/iTunesHelper.app/Contents/MacOS/iTunesHelper 525 ?? 0:00.20 /Applications/VMware Fusion.app/Contents/Library/VMware Fusion Start Menu.app/Contents/MacOS/VMware Fusion Start Menu 527 ?? 0:00.41 /System/Library/StagedFrameworks/Safari/WebKit.framework/Versions/A/XPCServices/com.apple.WebKit.WebContent.xpc/Contents/MacOS/com.apple.WebKit.WebContent 528 ?? 0:00.41 /System/Library/StagedFrameworks/Safari/WebKit.framework/Versions/A/XPCServices/com.apple.WebKit.Networking.xpc/Contents/MacOS/com.apple.WebKit.Networking 530 ?? 0:00.05 /usr/libexec/WiFiVelocityAgent 531 ?? 0:00.06 /usr/libexec/wifivelocityd 533 ?? 0:00.93 /System/Library/Frameworks/AppKit.framework/Versions/C/XPCServices/com.apple.appkit.xpc.openAndSavePanelService.xpc/Contents/MacOS/com.apple.appkit.xpc.openAndSavePanelService 534 ?? 0:00.34 /Applications/.esets/Contents/MacOS/esets_sci --scheduler --priority=normal --startup -- /etc /sbin /usr/sbin /bin /usr/bin 536 ?? 0:00.08 /System/Library/PrivateFrameworks/ViewBridge.framework/Versions/A/XPCServices/ViewBridgeAuxiliary.xpc/Contents/MacOS/ViewBridgeAuxiliary 538 ?? 0:00.08 /System/Library/PrivateFrameworks/PrintingPrivate.framework/Versions/A/PrintUITool 542 ?? 0:00.05 /Users/administrator/Library/Application Support/Google/Android File Transfer/Android File Transfer Agent.app/Contents/MacOS/Android File Transfer Agent 543 ?? 0:00.10 /Library/Printers/Brother/Utilities/Server/USBserver.app/Contents/MacOS/USBserver 544 ?? 0:00.05 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/XPCServices/com.apple.CommerceKit.TransactionService.xpc/Contents/MacOS/com.apple.CommerceKit.TransactionService 545 ?? 0:00.01 /System/Library/PrivateFrameworks/StoreXPCServices.framework/Versions/A/XPCServices/com.apple.appstore.PluginXPCService.xpc/Contents/MacOS/com.apple.appstore.PluginXPCService 548 ?? 0:00.11 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesisServer.app/Contents/MacOS/SpeechSynthesisServer launchd 549 ?? 0:00.04 /System/Library/Frameworks/ApplicationServices.framework/Frameworks/PrintCore.framework/Versions/A/printtool agent 551 ?? 0:00.03 /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/XPCServices/com.apple.hiservices-xpcservice.xpc/Contents/MacOS/com.apple.hiservices- 552 ?? 0:00.16 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/storeuid.app/Contents/MacOS/storeuid 553 ?? 0:00.10 /Library/Printers/Brother/Utilities/Server/NETserver.app/Contents/MacOS/NETserver 558 ?? 0:00.06 /System/Library/PrivateFrameworks/ContactsAgent.framework/Executables/ContactsAgent 559 ?? 0:00.08 /System/Library/Frameworks/Metal.framework/Versions/A/XPCServices/MTLCompilerService.xpc/Contents/MacOS/MTLCompilerService 565 ?? 0:01.74 /System/Library/Services/AppleSpell.service/Contents/MacOS/AppleSpell 571 ?? 0:00.49 /System/Library/PreferencePanes/Sound.prefPane/Contents/XPCServices/com.apple.preference.sound.remoteservice.xpc/Contents/MacOS/com.apple.preference.sound.remoteservice 574 ?? 0:00.03 /System/Library/CoreServices/Software Update.app/Contents/Resources/softwareupdate_notify_agent 590 ?? 0:00.08 /System/Library/StagedFrameworks/Safari/SafariShared.framework/Versions/A/XPCServices/com.apple.Safari.ImageDecoder.xpc/Contents/MacOS/com.apple.Safari.ImageDecoder 591 ?? 0:00.05 /System/Library/Frameworks/Metal.framework/Versions/A/XPCServices/MTLCompilerService.xpc/Contents/MacOS/MTLCompilerService 635 ?? 0:00.50 /System/Library/Input Methods/JapaneseIM.app/Contents/PlugIns/JapaneseIM.appex/Contents/MacOS/JapaneseIM 645 ?? 0:00.57 /Applications/Adobe Acrobat Reader DC.app/Contents/Frameworks/AdobeCrashReporter.framework/Versions/A/AdobeCRDaemon.app/Contents/MacOS/AdobeCRDaemon 365 AdobeReader 19.010.20098 /Applications/Ado 666 ?? 0:02.51 /Applications/Docker.app/Contents/MacOS/Docker 670 ?? 0:00.86 /Applications/Adobe Acrobat Reader DC.app/Contents/Helpers/AcroCEF/RdrCEF.app/Contents/MacOS/RdrCEF "/Applications/Adobe Acrobat Reader DC.app/Contents/Helpers/AcroCEF/RdrCEF.app" --locale=ja-jp 672 ?? 0:00.04 /usr/libexec/gamecontrollerd 674 ?? 0:00.36 /Applications/Microsoft Word.app/Contents/SharedSupport/Office365ServiceV2.app/Contents/MacOS/Office365ServiceV2 675 ?? 0:01.82 /Applications/Adobe Acrobat Reader DC.app/Contents/Frameworks/RdrCEF Helper.app/Contents/MacOS/RdrCEF Helper --type=renderer --disable-browser-side-navigation --disable-gpu-compositing --service- 677 ?? 0:00.08 /System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Resources/storeinappd 683 ?? 0:03.38 /Users/administrator/Library/Application Support/Adobe/com.adobe.ARMDCHelper/Adobe Acrobat Updater.app/Contents/MacOS/Acrobat Updater -psn_0_335954 700 ?? 0:00.02 /usr/libexec/loginitemregisterd 702 ?? 0:00.07 /Applications/Docker.app/Contents/MacOS/com.docker.supervisor -watchdog fd:0 703 ?? 0:00.04 com.docker.osxfs serve --address fd:3 --connect vms/0/connect --control fd:4 --log-destination asl 704 ?? 0:00.23 com.docker.vpnkit --ethernet fd:3 --port vpnkit.port.sock --port hyperkit://:62373/./vms/0 --diagnostics fd:4 --pcap fd:5 --vsock-path vms/0/connect --host-names host.docker.internal,docker.for.m 705 ?? 0:00.18 com.docker.driver.amd64-linux -addr fd:3 -debug 711 ?? 0:00.00 (Acrobat Update H) 716 ?? 0:00.04 /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/CVMCompiler 2 719 ?? 0:28.49 com.docker.hyperkit -A -u -F vms/0/hyperkit.pid -c 2 -m 2048M -s 0:0,hostbridge -s 31,lpc -s 1:0,virtio-vpnkit,path=vpnkit.eth.sock,uuid=3c4c03f6-0651-475f-a27e-9e373010a592 -U 11f6bb5c-ae3f-42b4 722 ?? 0:00.02 /System/Library/Frameworks/AudioToolbox.framework/XPCServices/com.apple.audio.SandboxHelper.xpc/Contents/MacOS/com.apple.audio.SandboxHelper 796 ?? 0:00.07 /usr/libexec/syspolicyd 798 ?? 0:00.21 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker -s mdworker -c MDSImporterWorker -m com.apple.mdworker.shared 799 ?? 0:00.08 /System/Library/PrivateFrameworks/CoreSuggestions.framework/Versions/A/Support/suggestd 721 ttys001 0:00.03 login -pf administrator 723 ttys001 0:00.02 -bash 801 ttys001 0:00.01 ps -ax
- 投稿日:2019-06-25T03:11:49+09:00
[Docker] Vueでaxiosを使うときにbaseurlを設定する方法
はじめまして、普段はproduct managerをやっているtatsukenと申します。
研修の一環でvue.js、expressを書くことがあったので、そのことを中心にまとめていきたいと思いますはじめに
フロントエンドとapiをdockerで別々のサーバーとして立ち上げているときに、フロントからいちいちエンドポイントを指定するのが面倒だったので、いろいろ調べたmemo
何をするのか
vueからaxiosを用いてapiリクエストを行う際、いちいちURLを指定するのは面倒。
sample.jsimport Axios from 'axios' async getAmount() { try { const res = await Axios.get(`http://localhost:8081/hoge`); console.log(res.data); } catch (error) { console.log(error); } }このように毎回
http://localhost:8081/hoge
というようにurlを指定するのは面倒
できれば/hoge
というように簡潔にエンドポイントを指定したい解決策
まず
docker-compose.yml
でvueプロジェクトのdockerイメージ以下のenvironment
にVUE_APP_API_ENDPOINT: http://http://localhost:任意のport番号
を追加するdocker-compose.ymlservices: web: ... environment: VUE_APP_API_ENDPOINT: http://localhost:8081 //任意のport番号を指定 ...vueプロジェクト内の
main.js
に以下を追記main.jsimport Axios from 'axios' Axios.defaults.baseURL = process.env.VUE_APP_API_ENDPOINT;これで以下のように簡潔に書けるようになります
sample.jsimport Axios from 'axios' async getAmount() { try { const res = await Axios.get(`/hoge`); console.log(res.data); } catch (error) { console.log(error); } }最後に
エンドポイントへのリクエストが増えれば増えるほどURLの指定は面倒になってくるので、よければ試してみてください。
なにか間違いなどありましたら指摘していただけると幸いです。
- 投稿日:2019-06-25T02:58:26+09:00
【構築】CentOS7+VPN+docker:Nuxt.js+wordpress環境構築(コンテナセットアップ編)
これはなに?
こんにちわ!ナギちゃんだよー☆
きょーは前回セットアップしたVPSをつかってdocker-composeでチンするだけのお手軽タピオカ時短コンテナをたてるよー!はい。
長いので
- VPSセットアップ編
- コンテナ構築編(いまここ)
- Nuxt+Wordpress編
に分割されています。
これはなんですか?
Nuxt+Wordpress+開発用コンテナ群をつくります。開発用コンテナはVPN接続時しか見れないすぐれもの!
なにがめんどくさいですか?
docker勉強用にはじめたものの地雷を多数ふんでしまい満身創痍になりました。勉強用ならもっと簡単なところからはじめたほうがよかった・・・
Let's encrypt
みんなやってるから簡単だろー?とか思ったら地味にめんどくさかったです。
たしかにぐぐるといろいろな手段があるようで◆nginxコンテナ+https-portalコンテナ
・https-portalというLet's Encryptの取得+更新をすべて自動でやってくれるコンテナがある
・https-portalのnginx > webapp用のnginx > webappというめんどい経路になる
・(いじった範囲では)https-portalのnginx用confをこちらで操作するとうまくうごきませんでした
・(いじった範囲では)用意されている変数でリダイレクト先指定するとURLにいらないものがつくのでリネームがめんどそう◆nginx-proxyコンテナ+docker-letsencrypt-nginx-proxy-companionコンテナ
・nginx-proxyというコンテナ群を監視し自動でproxyしてくれるコンテナがある
・nginx~companionというLet's Encryptの取得+更新をすべて自動でやってくれるコンテナがある
・開発用コンテナもまざるので自動でproxyとかやってほしくない(設定をしらべるのもめんどう)◆nginxコンテナ+certbotコンテナ
・certbotがうごくだけの公式コンテナがある(自動更新などはない)
・certbot動作時は外部Port80で通信できる必要がある + 同じ外部ポート指定で動作するコンテナは作れない
・(初回)ssl証明書がない > nginxが起動しない > nginxコンテナ終了
・(初回)nginxが起動しない> certbotが認証できない(上とあわせてデッドロック)
・ただしcertbotはhttp://xxxx/.well-known/acme-challenge/
にのみアクセスできれば認証できる◆1つのコンテナにnginx+certbotインストール
・上とほぼ同様で、さらにnginxコンテナに余分なものがついてしまうというかんじになります。
多くの人が悩んでいるようで、自作イメージを配布されている方もいるのですが、何が入っているかわからないイメージは使用しないは鉄則そうなのと、初回さえどうにかなれば綺麗にすみそうということで、今回は3番目でいくことにします。ネットワーク設定
portsを指定したコンテナは、グローバルで公開され、firewalldによるブロックは効きません
たとえば「firewalldで80,443のみ許容」していても、「mariadbコンテナのportsを3306」のように指定すると、なにごともなくyourdomain:3306
で外部からアクセスできてしまいます。これはdockerがiptablesを直接操作するためのようです。
(とはいえiptablesをみると、firewalldで設定したポートスキャンのあたりは残っているようなので、firewalldで設定する意味がまったくないわけではないようです)docker-composeであげたコンテナ群はymlに書いておけば自動でbridgeされるので、とりあえずコンテナ間でさえ通信できれば良いコンテナにはportsを一切指定しないようにします。
ports:80
のように内部だけ設定していても、30000以上の任意のポートに割り振られるので外部に穴があいていることに変わりはないはずです。
また、特定のIPアドレスのみ許容したいコンテナは、左辺にIPアドレスまで指定できます(ex:192.168.1.252:3306:3306
)
コンテナ間の接続もなにやってるかわからなくてかなり怖いので、実運用するならもっと勉強しなければなりませんね・・・。VMと同等なCentOSコンテナ
開発用コンテナとして、Nuxtが動作し、sshで直接ログインでき、sudoもsystemctlも使えるなど、ほぼVMのように使えるものを目指しました。
コンテナのアンチパターンであがってそうな感じですが、VSCode Remote Developmentが正式にリリースされたので、今後そこそこ需要あるのでは?とも思います。
とはいえsystemctlやssh用rsaファイルの権限あたりで慣れていないのでかなり疲れました・・・。けっきょく/sbin/initで起動しつつbashコマンドもやる方法が見つけられなかったので nuxtのセットアップはshにまとめておいてあとでdocker execする・・・という風にしています。
じゅんび?
ディレクトリ作成
作業するためのディレクトリと、コンテナ内部のデータを保存するディレクトリを作成します
コンテナ作成作業ディレクトリ
コンテナをつくるためのもろもろ材料を置く作業用ディレクトリを作成します。
前回作成した環境であれば、ユーザにはsudo+docker権限があるので、ログインしたユーザでそのまま作業ができます。好きなところに以下のようにディレクトリを作成し、これから記述していく各Dockerfileやconfを設置してください。/container | #dockerまとめて設定ファイル ├── docker-compose.yml | | #プロキシ用nginxコンテナ用ディレクトリ ├── /nginx | └── nginx.conf | | #certbot動かすコンテナ用ディレクトリ ├── /certbot | | #Nuxtで作成されたアプリの公開用コンテナ用ディレクトリ ├── /webapp | └── Dockerfile | | | #wordpressコンテナ用ディレクトリ ├── /wordpress | | #wordpress用mariadbコンテナ用ディレクトリ ├── /wordpress_db | └── my.conf | | #Nuxtで開発するためのCentOSコンテナ用ディレクトリ └── /webapp_dev ├── Dockerfile ├── sshd.conf ├── id_rsa.pub └── startup_nuxt.shssh[user01@hostname ~]# mkdir container [user01@hostname ~]# mkdir container/nginx [user01@hostname ~]# mkdir container/certbot [user01@hostname ~]# mkdir container/webapp [user01@hostname ~]# mkdir container/webapp_dev [user01@hostname ~]# mkdir container/wordpress [user01@hostname ~]# mkdir container/wordpress_db※なんとなくぜんぶ作っていますが、いらない(なにもファイルいれない)ディレクトリもあるのでお好みで
コンテナ内部からホスト側ディレクトリを参照するもの
コンテナてきには、外部データは最小限にしたいのですが、今回は
- SSL証明書ファイル一式: 先述の理由もあり、コンテナ起動時に存在していないと初回起動できないため
- Wordpressのファイル一式: wordpressの設定は永続化してほしいため
- データベースのイメージ: wordpress記事を保存するため
としました。ほかは
- 公開用/開発用ファイルはコンテナ起動時にgithubからcloneし、本体には残さないようにします
- それぞれのディレクトリは、慣習的に楽かなぁと思い、ホストにインストールしたときと同じような位置にしています
- が、普段はインストール時につくられるものが存在しないので、ホスト側にディレクトリを作成する必要があります
ssh[user01@hostname ~]# sudo mkdir /etc/letsencrypt [user01@hostname ~]# sudo mkdir /var/www [user01@hostname ~]# sudo mkdir /var/lib/mysql [user01@hostname ~]# sudo mkdir /var/www [user01@hostname ~]# sudo mkdir /var/www/html [user01@hostname ~]# sudo mkdir /var/www/html/wordpress初回certbot
先述したように、SSL用ファイルがないとnginxを起動できません。この初回起動のために、certbotコンテナを準備して、SSL認証用ファイルを生成します。成功すれば、
IMPORTANT NOTES:Congratulations!
の表示とともに、etc/letsencrypt
ディレクトリにいろいろなファイルができているはずです。
なお、このcertbotイメージは今後も使っていくので削除する必要はありません。ssh[user01@hostname ~]# docker image pull certbot/certbot [user01@hostname ~]# docker run --rm -p 443:443 -p 80:80 --name certbot-certonly -v "/etc/letsencrypt:/etc/letsencrypt" certbot/certbot certonly -n -m "${メールアドレス}" -d ${ドメイン} --standalone --agree-tosgithubリポジトリ作成
webappコンテナがファイルをDLするためにつくっておきます。この段階では空でもかまいません。
プライベートリポジトリの場合は、cloneするのに認証が必要となるので、githubのSettings > Developer settings > Personal access tokens
からアクセストークンを作成してください。https://${ユーザ名}:1234567890awsedrftgyhujikolp@github.com/${ユーザ名}/${リポジトリ名}
みたいなやつが生成できれば、このURLからダウンロードすることができます。
docker-compose
ながくなりましたが、やっとメインとなるdocker-composeをかいてみます。YAMLとかさわったことがなくて病むる。
docker-compose.ymlversion: '3' services: nginx: image: nginx:1.17.0-alpine container_name: nginx restart: always ports: - "${グローバルIP}:80:80" - "${グローバルIP}:443:443" depends_on: - wordpress volumes: - /etc/letsencrypt:/etc/letsencrypt/ - ./nginx/nginx.conf:/etc/nginx/nginx.conf certbot: image: certbot/certbot container_name: certbot volumes: - /etc/letsencrypt:/etc/letsencrypt - certs:/var/log/letsencrypt - certs:/var/lib/letsencrypt webapp: container_name: webapp restart: always image: webapp build: context: ./webapp dockerfile: Dockerfile tty: true depends_on: - wordpress command: > sh -c 'git clone ${githubのトークン+URL} && cd ${プロジェクト名(cloneしたときに作成されるディレクトリ名)} && yarn install && npm run build && npm start' wordpress: image: wordpress:5.2.1-php7.2-apache container_name: wordpress restart: always ports: - "${VPNローカルIP}:3180:80" depends_on: - wordpress_db environment: WORDPRESS_DB_HOST: wordpress_db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: ${データベースのパスワード} WORDPRESS_DB_NAME: wordpress volumes: - /var/www/html/wordpress:/var/www/html/ wordpress_db: image: mariadb:10.4.5-bionic container_name: wordpress_db restart: always environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: ${データベースのパスワード} volumes: - /var/lib/mysql:/var/lib/mysql - ./mysql/my.conf:/etc/mysql/my.conf webapp_dev: container_name: webapp_dev image: webapp_dev build: context: ./webapp_dev dockerfile: Dockerfile args: ROOT_PSWD: "${開発用コンテナのROOTパスワード}" USER_NAME: "${開発用コンテナのユーザ名}" USER_PSWD: "${開発用コンテナのパスワード}" privileged: true restart: always ports: - "${VPNローカルIP}:${開発用コンテナSSHポート}:${開発用コンテナSSHポート}" - "${VPNローカルIP}:${開発用コンテナWEBポート}:3000" depends_on: - wordpress command: ["/sbin/init"] volumes: certs:nginxコンテナ
インターネット公開用のneginxコンテナを作成します。
- ドメイン:Port80 → Port443にリダイレクト(デフォルト)
- ドメイン:Port443 → 公開用webappコンテナにリダイレクト
シンプルな構成なのでnginxイメージそのまま使えます。つまりDockerfileは不要です。
nginx.conf
httpでhttpsにリダイレクト、httpsでwebappコンテナのExpressにリダイレクトします。
(参考にさせて頂きました: NginxでのSSL設定の細かい意味)/container/nginx/nginx.confuser nginx nginx; worker_processes 3; worker_cpu_affinity 001 010 100; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { multi_accept off; worker_connections 1024; use epoll; } http { include mime.types; default_type application/octet-stream; error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; server_tokens off; server_name_in_redirect off; port_in_redirect off; sendfile on; tcp_nopush on; keepalive_timeout 5; gzip_static on; gzip on; gzip_http_version 1.0; gzip_vary on; gzip_comp_level 2; gzip_types text/plain text/xml text/css text/javascript application/xhtml+xml application/xml application/rss+xml application/atom_xml application/javascript application/x-javascript application/x-httpd-php; gzip_disable "MSIE [1-6]\."; proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=one:32m max_size=512m inactive=1d; proxy_temp_path /var/tmp/nginx; proxy_cache_key "$scheme://$host$request_uri"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Accept-Encoding ""; proxy_connect_timeout 5; proxy_send_timeout 10; proxy_read_timeout 120; proxy_hide_header X-Pingback; proxy_hide_header X-Powered-By; proxy_hide_header Etag; proxy_hide_header Vary; proxy_cache_use_stale timeout invalid_header http_500 http_502 http_503 http_504; proxy_cache_lock on; proxy_cache_lock_timeout 5s; server { listen 80 default_server; server_name ${ドメイン名}; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name ${ドメイン名}; charset UTF-8; ssl on; ssl_certificate /etc/letsencrypt/live/ge-no.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/ge-no.com/privkey.pem; location / { proxy_pass https://wordpress:80/; proxy_redirect default; } } }certbotコンテナ
さきほどDLしたものそのままでOKです。Dockerfileは不要です。
webappコンテナ
インターネットに公開するNuxt.jsアプリのコンテナです。
ビルド時にnuxt環境をととのえておきます。DockerfileFROM node:12.4.0-alpine WORKDIR /webapp ENV LANG C.UTF-8 ENV TZ Asia/Tokyo RUN apk update && \ apk add git && \ npm install -g npm && \ npm install -g yarn && \ npm install -g nuxtwordpressコンテナ
wordpress+wordpressAPIが動作するだけのコンテナです。Dockerfileは不要です。
wordpressイメージは各種バージョンのほかにも、apacheいり、php-fpm版などもあります。今回はバックエンドとして使うためphp-fpmがほしいところではありますが、編集画面にアクセスするのにnginx側で設定するのも面倒なので、素直にapache版を使用しました。CLIを使用してセットアップできればよりかっこよさそうですが、ディレクトリまるまる外部化したおかげもあり、Wordpressのセットアップはコンテナが再起動しても保持されるので、初回のみブラウザからアクセスして設定するところは妥協します。mariadbコンテナ
Oracleはイヤなのでwordpress用mariadbです。Dockerfileは不要です。
my.confはUTF-8の設定と、イメージを適時分割するように指定したのみです。my.conf
my.conf[mysqld] pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql secure-file-priv= NULL symbolic-links=0 character-set-server=utf8 default_authentication_plugin = mysql_native_password innodb_data_file_path=ibdata1:1G innodb_file_per_table !includedir /etc/mysql/conf.d/webapp_devコンテナ
webappコンテナ用のアプリを開発する場所です。
DockerfileFROM centos:centos7.6.1810 ARG ROOT_PSWD ARG USER_NAME ARG USER_PSWD RUN yum -y update && yum clean all && \ yum -y install epel-release openssh-server sudo git RUN echo "root:$ROOT_PSWD" |chpasswd RUN useradd $USER_NAME RUN echo "$USER_NAME:$USER_PSWD" |chpasswd RUN echo "$USER_NAME ALL=(ALL) ALL" >> /etc/sudoers RUN curl -sL https://rpm.nodesource.com/setup_11.x | bash - RUN yum -y install nodejs yarn && \ npm install -g yarn RUN mkdir /home/$USER_NAME/.ssh && \ chmod 700 /home/$USER_NAME/.ssh && \ chown $USER_NAME /home/$USER_NAME/.ssh/ && \ /usr/bin/ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -C '' -N '' COPY sshd.conf /etc/ssh/sshd_config COPY id_rsa.pub /home/$USER_NAME/.ssh/authorized_keys COPY startup_nuxt.sh /home/$USER_NAME/startup_nuxt.sh RUN chown $USER_NAME /home/$USER_NAME/.ssh/authorized_keys && \ chown $USER_NAME /home/$USER_NAME/startup_nuxt.sh WORKDIR /home/$USER_NAMEsshd.confProtocol 2 Port ${開発用コンテナ用SSHポート} ListenAddress 0.0.0.0 SyslogFacility AUTHPRIV PermitRootLogin no PubKeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication no ChallengeResponseAuthentication no GSSAPICleanupCredentials no UsePAM yes X11Forwarding yes UsePrivilegeSeparation sandbox AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE AcceptEnv XMODIFIERS Subsystem sftp /usr/libexec/openssh/sftp-serverid_rsa.pub(RSA公開鍵)startup_nuxt.sh#!/bin/bash ## startup_nuxt_dev.sh set -x readonly REPO_NAME="${プロジェクト名}" readonly REPO_URL="${Githubのトークン+URL}" readonly GIT_MAIL="${Gitするときのmailアドレス}" readonly GIT_USER="${Gitするときのユーザ名}" git clone $REPO_URL git config --global user.email "$GIT_MAIL" git config --global user.name "$GIT_USER" cd $REPO_NAME yarn install npm run devビルドと起動
やっと完成しました!では実行していきましょう。
docker-compose.ymlを設置したディレクトリでsshdocker-compose buildなにごともなければ、エラーが出ずに終了するはずです
sshdocker-compose upかっこよさげなインジケータとともに起動がはじまります。
初回はかなり時間がかかりますが、2回目からはそこそこ高速です。Wordpress初期設定
VPN接続し、
http://192.168.1.254:3080
などでwordpressコンテナに直接続すればWordpress初期設定画面が表示されるはずです。
適当に設定した後、WP APIのプラグインをインストールします。
- wordpress初期セットアップ
- [WP REST API Controller]プラグインのインストール
- [パーマリンク設定] を [数字ベース] に変更
http://192.168.1.254:3000/wp-json/wp/v2/posts
などにアクセスしJSONが見れることを確認その他拡張エディタなどお好みがあれば追加してください。
開発環境初期設定
Nuxtでプロジェクトを作成しましょう。
git push しますコンテナ群再起動
これですべてのファイルがそろったはずです。コンテナを終了し、再度起動します
ssh[user01@hostname ~]# docker-compose down [user01@hostname ~]# docker-compose up -d #-dでバックグラウンド実行動作確認
Webアクセス
しばらくして起動したころになったら、Webアクセスして各種コンテナ内サービスがみれるかを確認します
- グローバルアドレスでhttpへアクセスし、httpsへ転送されてNuxtの開始ページがみれる
- グローバルアドレスでhttpsへアクセスし、Nuxtの開始ページがみれる
- VPNローカルアドレスでhttpへアクセスし、wordpressがみれる
- VPNローカルアドレスでhttpへアクセスし、開発用コンテナのNuxtの開始ページがみれる
Wordpress接続確認
コンテナ内部で他コンテナの情報がとれるかを確認します
ssh[user01@hostname ~]# docker exec -it webapp_dev bash [root@webapp_dev]# curl http://wordpress:80/wp-json/wp/v2/postsWordpressのHello World記事のJSONとかが取得できていればOKです
VSCodeからssh
- VSCodeにRemoteSSHエクステンションをインストール
- settingから接続configを記述
- 接続
何度かパスフレーズを聞かれるので入力します。SSH Agentの警告がでた場合、いれてもいいですし無しでもできます。
SSH認証鍵更新
期限に余裕があるので更新はスキップされますが、動作していればOKです。
ssh[user01@hostname ~]# docker run --rm -p 80 -v "/etc/letsencrypt:/etc/letsencrypt" certbot/certbot renew --force-renewal --standalone --agree-tosこの作業でつかう確認コマンド集
ssh#コンテナをすべて停止する docker-compose down #コンテナイメージ一覧 docker image ls #稼働中コンテナ一覧 docker ps #コンテナ内のログ docker logs ${コンテナ名}よくあるエラー
コンテナが起動しない(ポートアサインエラー)
コンテナのPortsに外部IPアドレスまで指定した場合、コンテナ起動時にそのIFが存在していないと起動できないようです。portsに仮想IF/IPを指定した場合、仮想IFが存在する状態で(VPN接続するなど)
docker-compose up
する必要がありますmysqlでmysql_updateしろというログがでている
mariadbでは最新版でも出なかったのですが、mysqlを使ってみた時に遭遇しました。
mysql_upgrade -u ${mariasqlのユーザ} -p${mariadbのパスワード}
を実行してください
コンテナ起動時ではなく、イメージがある限り1度実行すれば大丈夫なようです。nginxの対象ポートじゃないのに勝手にhttpsに転送される
ChromeかFirefoxを使用している場合、ブラウザ側の挙動として、一度httpsアクセスしたサイトは強制的にhttpsにリダイレクトします。リセットしてからアクセスしてください。このへんのテストはEdgeちゃんが唯一輝く場面かと思います・・・。
wordpressがみれない
wordpressは初期設定した際にいろいろ自動でやってくれるので、一度ドメイン側からwordpressにアクセスして初期設定をしてしまうとIPアドレス直打ちではみれなくなったります。wordpresのディレクトリとDBイメージを削除してから再度実行しましょう
npm run devやnpm buildができない
nuxtプロジェクト開始時の設定でnpmにした場合は、
npm
で、yarnにした場合はyarn start
にしてくださいTeraterm等ではsshできるのにVSCodeでsshできない
C:\Users\${USERNAME}\.ssh\known_hosts
にゴミがのこっている可能性があります。中身をすべて削除してください(ファイルは消さないでください)さいごに?
おれたちはようやくのぼりはじめたばかりだからな・・・このはてしなく遠いコンテナ坂をよ・・・。
ということで、コンテナ間通信あり、永続化あり、専用コンテナあり、ほぼVMコンテナありと、一通りすべて体験できる地獄コンテナ群でとても勉強になりました。
dockerについてはむかし「ガチなドッカーイメージをプルっちまうとマジ1発でコンテナードな環境がよォ!」てきなかんじのことを聞いたので、じぶんのような雑魚でもセキュアな環境が一発でポワワ・・・な魔法アイテムだと思っていたのですが、使ってみると「結局NWは複雑になるし相変わらずconfをショドーする力いるしDockerfileもほぼshellだしshell力がさらに重要なんじゃ・・・?」とかおもわなくもないです。ゆくゆくはDockerネットワークの挙動を把握しつつ、環境変数も活かして各種confも定数なしで記述したいところです。
次回はやっとNuxt.jsをさわってみます。ながかった・・・。
- 投稿日:2019-06-25T02:41:57+09:00
【メモ】dockerでコンテナにログインする
忘れがちなのでメモ
$ docker exec -it コンテナ名 bash
- 投稿日:2019-06-25T00:35:46+09:00
AWS Fargate の「タスクのスケジューリング」で定時バッチ用コンテナを実行する
概要
- AWS Fargate には、スケジュールルールに従ってタスクを実行できる機能がある。
- スケジュールルールは次の2通りある。どちらもスケジュールルールに従って毎回新しいコンテナが起動して終了する。
- 固定された間隔で実行
- Cron式
- この「タスクのスケジューリング」機能を使って、これまで EC2 上の crond で起動して実行していたバッチ処理を、コンテナ化して AWS Fargate に移行してみる。
今回 Fargate に移行するバッチの概要
Elasticsearch の インデックスを1日1回削除するバッチ。
- サーバのアクセスログを Fluentd で Elasticsearch に送ってKibanaで可視化している。1日分のアクセスログを1つのインデックスに格納していて、30日前のインデックスファイルを削除するバッチを1日1回実行している。
バッチは bash スクリプトでこんな感じで書いている。
#!/bin/bash ESDOMAIN="hogehoge.ap-northeast-1.es.amazonaws.com" INDEXNAME=( "fastly-accesslog-" "Varnish-accesslog-" "nginx-accesslog-" ) DATA=`date -d '30 days ago' +"%Y-%m-%d"` for INDEX in ${INDEXNAME[@]}; do echo "Delete: ${INDEX}${DATA}" curl -s -X DELETE https://${ESDOMAIN}/${INDEX}${DATA} echo -e "\n" done echo "Execution Result" curl -s -X GET ${ESDOMAIN}/_aliases?pretty | grep -v '}' | sortバッチ処理を行うコンテナの Dockerfile 作成
FROM alpine:latest RUN apk --no-cache add tzdata && cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && apk del tzdata RUN apk --no-cache add coreutils bash bash-completion curl COPY del-index.sh /del-index.sh RUN chmod u+x /del-index.sh CMD /bin/bash /del-index.shDockerfileの簡単な説明
軽量な Alpine Linux を使う
- いろいろ削がれて軽量になっている。
- 今回のシェルスクリプトを実行するために必要なものを追加する。
Alpine Linux の timezone を JST に設定
- デフォルトは UTC になっているので、JST に設定する。
- Dockerfile追加設定
RUN apk --no-cache add tzdata && cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && apk del tzdata- 参考: https://wiki.alpinelinux.org/wiki/Setting_the_timezone
dataコマンド
- Alpine Linux のdataコマンドは、「date -d '30 days ago'」 を解釈してくれない。 なので、GNU coreutils の date をインストールする。
- Dockerfile 追加設定
RUN apk --no-cache add coreutilsbash
- Alpine Linux のデフォルトのシェルは sh なので、配列が使えない。bashで書いた次の部分でエラーになってしまう。
INDEXNAME=( "fastly-accesslog-" "Varnish-accesslog-" "nginx-accesslog-" )
- シェルスクリプトを sh 用に書き直すのは面倒なので、bashを入れてしまう。
- Dockerfile 追加設定
RUN apk --no-cache add bash bash-completioncurl
- 今回のバッチは、curl で Elasticsearch の API を叩くので、curl をインストールする。
- Dockerfile 追加設定
RUN apk --no-cache add curlbashスクリプト本体
- 今回は del-index.sh という名前で、上記のシェルスクリプトのファイルを作成する。これを Dockerfile と同じディレクトリに置く。
- docker build 時に del-index.sh ファイルを docker イメージの / にコピーして、実行権限を付与する。
- コンテナ起動時に、この del-index.sh を実行する。
- Dockerfile 追加設定
COPY del-index.sh /del-index.sh RUN chmod u+x /del-index.sh CMD /bin/bash /del-index.shDockerイメージをECRへプッシュして、Fargete の設定を行う
- 今回のバッチは、Elasticsearch 側で接続元IPアドレスの制限を行うので、Fargateによって起動したコンテナは固定のIPアドレスをもたせる必要がある。
- AWS Fargate で実行したコンテナに固定のグローバルIPアドレスを割り当てる を参考にして諸々設定する。
Fargate タスクのスケジューリング 設定
VPC とセキュリティグループ
AWS Fargate で実行したコンテナに固定のグローバルIPアドレスを割り当てる を参考作成
以上で、毎朝 06:00 に Elasticsearch のインデックスを削除するコンテナが起動して、処理を終えたらコンテナが消滅する。
実行ログは CloudWatch ログに送られる。おまけ
Slack にも実行結果を送りたい場合は、del-index.sh に Slack へ送る設定を追加する
#!/bin/bash ESDOMAIN="hogehoge.ap-northeast-1.es.amazonaws.com" INDEXNAME=( "fastly-accesslog-" "Varnish-accesslog-" "nginx-accesslog-" ) DATA=`date -d '30 days ago' +"%Y-%m-%d"` exec 3>&1 exec > /exec.log echo "Elasticsearch delete index" for INDEX in ${INDEXNAME[@]}; do echo "Delete Index: ${INDEX}${DATA}" curl -s -X DELETE https://${ESDOMAIN}/${INDEX}${DATA} echo -e "\n" done echo "curl -X GET https://${ESDOMAIN}/_aliases?pretty" curl -s -X GET ${ESDOMAIN}/_aliases?pretty | grep -v '}' | sort exec 1>&3 sed -i -e 's/\"//g' /exec.log channel="hoge" username="Container" text="Elasticsearch delete index" color="gray" message=`cat /exec.log` attachments=" { \"color\":\"${color}\", \"text\": \"${message}\" }" emoji=':envelope:' url="https://hooks.slack.com/services/hoge/hogehoge" payload="payload={\"channel\": \"${channel}\", \"username\": \"${username}\", \"text\": \"${text}\", \"attachments\":[${attachments}] , \"icon_emoji\": \"${emoji}\"}" curl -s -m 5 -d "${payload}" $url exit
- 標準出力をファイルへ出力する設定
exec 3>&1 exec > /exec.log 〜 exec 1>&3- 実行結果ファイルからダブルクォーテーションを除外(Slack送信時に invalid_payload エラーとなるため)
sed -i -e 's/\"//g' /exec.log
- 投稿日:2019-06-25T00:35:46+09:00
AWS Fargate の「タスクのスケジューリング」でバッチ用コンテナを定時実行する
概要
- AWS Fargate には、スケジュールルールに従ってタスクを実行できる機能がある。
- スケジュールルールは次の2通りある。どちらもスケジュールルールに従って毎回新しいコンテナが起動して終了する。
- 固定された間隔で実行
- Cron式
- この「タスクのスケジューリング」機能を使って、これまで EC2 上の crond で起動して実行していたバッチ処理を、コンテナ化して AWS Fargate に移行してみる。
今回 Fargate に移行するバッチの概要
Elasticsearch の インデックスを1日1回削除するバッチ。
- サーバのアクセスログを Fluentd で Elasticsearch に送ってKibanaで可視化している。1日分のアクセスログを1つのインデックスに格納していて、30日前のインデックスファイルを削除するバッチを1日1回実行している。
バッチは bash スクリプトでこんな感じで書いている。
#!/bin/bash ESDOMAIN="hogehoge.ap-northeast-1.es.amazonaws.com" INDEXNAME=( "fastly-accesslog-" "varnish-accesslog-" "nginx-accesslog-" ) DATA=`date -d '30 days ago' +"%Y-%m-%d"` for INDEX in ${INDEXNAME[@]}; do echo "Delete: ${INDEX}${DATA}" curl -s -X DELETE https://${ESDOMAIN}/${INDEX}${DATA} echo -e "\n" done echo "Execution Result" curl -s -X GET ${ESDOMAIN}/_aliases?pretty | grep -v '}' | sortバッチ処理を行うコンテナの Dockerfile 作成
FROM alpine:latest RUN apk --no-cache add tzdata && cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && apk del tzdata RUN apk --no-cache add coreutils bash bash-completion curl COPY del-index.sh /del-index.sh RUN chmod u+x /del-index.sh CMD /bin/bash /del-index.shDockerfileの簡単な説明
軽量な Alpine Linux を使う
- いろいろ削がれて軽量になっている。
- 今回のシェルスクリプトを実行するために必要なものを追加する。
Alpine Linux の timezone を JST に設定
- デフォルトは UTC になっているので、JST に設定する。
- Dockerfile 追加設定
RUN apk --no-cache add tzdata && cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && apk del tzdata- 参考: https://wiki.alpinelinux.org/wiki/Setting_the_timezone
dataコマンド
- Alpine Linux のdataコマンドは、「date -d '30 days ago'」 を解釈してくれない。 なので、GNU coreutils の date をインストールする。
- Dockerfile 追加設定
RUN apk --no-cache add coreutilsbash
- Alpine Linux のデフォルトのシェルは sh なので、配列が使えない。bashで書いた次の部分でエラーになってしまう。
INDEXNAME=( "fastly-accesslog-" "Varnish-accesslog-" "nginx-accesslog-" )
- シェルスクリプトを sh 用に書き直すのは面倒なので、bashを入れてしまう。
- Dockerfile 追加設定
RUN apk --no-cache add bash bash-completioncurl
- 今回のバッチは、curl で Elasticsearch の API を叩くので、curl をインストールする。
- Dockerfile 追加設定
RUN apk --no-cache add curlbashスクリプト本体
- 今回は del-index.sh という名前で、上記のシェルスクリプトのファイルを作成する。これを Dockerfile と同じディレクトリに置く。
- docker build 時に del-index.sh ファイルを docker イメージの / にコピーして、実行権限を付与する。
- コンテナ起動時に、この del-index.sh を実行する。
- Dockerfile 追加設定
COPY del-index.sh /del-index.sh RUN chmod u+x /del-index.sh CMD /bin/bash /del-index.shDockerイメージをECRへプッシュして、Fargete の設定を行う
- 今回のバッチは、Elasticsearch 側で接続元IPアドレスの制限を行うので、Fargateによって起動したコンテナは固定のIPアドレスをもたせる必要がある。
- AWS Fargate で実行したコンテナに固定のグローバルIPアドレスを割り当てる を参考にして諸々設定する。
Fargate タスクのスケジューリング 設定
Fargate タスクのスケジューリングの概要
Fargate は CloudWatch イベントに応じたタスクのスケジューリングをサポートしている。
スケジュールされたイベントルールは、特定の間隔 (N 分、時間、日ごとに実行)に設定することができるし、または、より複雑なスケジュールに設定する場合は、cron 式を使用することもできる(ルールのスケジュール式)。
すべてのスケジュールされたイベントは UTC タイムゾーンを使用している。
例えば、cron式で cron(0 10 * * ? *) と設定した場合、毎日午前 10:00 (UTC) に実行する。
日本時間で毎朝午前 10:00 に実行させるには、cron式で cron(0 1 * * ? *) と設定する(JST=UTC+9)。
- 参照:ルールのスケジュール式
タスクのスケジューリング設定例
スケジュールルール設定
今回は、毎日午前 6:00 (JST) に実行したいので、Cron 式は cron(0 21 * * ? *)
VPC とセキュリティグループ
AWS Fargate で実行したコンテナに固定のグローバルIPアドレスを割り当てる を参考作成
以上で、毎日午前 6:00 (JST) に Elasticsearch のインデックスを削除するコンテナが起動して、処理を終えたらコンテナが消滅する。
実行ログは CloudWatch ログに送られる。おまけ
Slack にも実行結果を送りたい場合は、del-index.sh に Slack へ送る設定を追加する
#!/bin/bash ESDOMAIN="hogehoge.ap-northeast-1.es.amazonaws.com" INDEXNAME=( "fastly-accesslog-" "Varnish-accesslog-" "nginx-accesslog-" ) DATA=`date -d '30 days ago' +"%Y-%m-%d"` exec 3>&1 exec > /exec.log echo "Elasticsearch delete index" for INDEX in ${INDEXNAME[@]}; do echo "Delete Index: ${INDEX}${DATA}" curl -s -X DELETE https://${ESDOMAIN}/${INDEX}${DATA} echo -e "\n" done echo "curl -X GET https://${ESDOMAIN}/_aliases?pretty" curl -s -X GET ${ESDOMAIN}/_aliases?pretty | grep -v '}' | sort exec 1>&3 sed -i -e 's/\"//g' /exec.log channel="hoge" username="Container" text="Elasticsearch delete index" color="gray" message=`cat /exec.log` attachments=" { \"color\":\"${color}\", \"text\": \"${message}\" }" emoji=':envelope:' url="https://hooks.slack.com/services/hoge/hogehoge" payload="payload={\"channel\": \"${channel}\", \"username\": \"${username}\", \"text\": \"${text}\", \"attachments\":[${attachments}] , \"icon_emoji\": \"${emoji}\"}" curl -s -m 5 -d "${payload}" $url exit
- 標準出力をファイルへ出力する設定
exec 3>&1 exec > /exec.log 〜 exec 1>&3- 実行結果ファイルからダブルクォーテーションを除外(Slack送信時に invalid_payload エラーとなるため)
sed -i -e 's/\"//g' /exec.log
- 投稿日:2019-06-25T00:25:57+09:00
docker-lambdaで関数連続実行をワンコンテナで
ワンコンテナでlambada関数を連続実行したい
lambci/docker-lambdaでローカルテストする際に、下記のように普通に関数を連続実行すると...
docker run --rm -v "$PWD":/var/task lambci/lambda:python3.6 sample_function.lambda_handler '{"Hello":"World"}' docker run --rm -v "$PWD":/var/task lambci/lambda:python3.6 sample_function.lambda_handler '{"Hello":"World"}'下記のようにコンテナが別々に生成される。(※docker container statsの結果を表示↓↓)
これをワンコンテナでやりたい場合は、下記のようにentrypointを上書きしてやれば可能。
docker run --rm -v "$PWD":/var/task --entrypoint "" lambci/lambda:python3.6 bash -c " \ python3.6 /var/runtime/awslambda/bootstrap.py sample_function.lambda_handler '{\"Hello\":\"World\"}' & \ python3.6 /var/runtime/awslambda/bootstrap.py sample_function.lambda_handler '{\"Hello\":\"World\"}' \ "