GeekFactory

int128.hatenablog.com

docker

docker-gitbucketでExternal DBやPrefixなどを設定する

DockerでGitBucketを立ち上げる時は f99aq8ove/docker-gitbucket というイメージを利用しています。GitBucket最新版への追随が早いので重宝しています。 github.com このたびPRがマージされたので、環境変数でExternal DBやPrefixなどを設定できるようになり…

acmesmithでSSL証明書を管理する

開発環境などのテンポラリな環境でSSL証明書を利用したい場合はLet's Encryptが便利です。Let's Encryptの証明書を管理するツールにはcertbotやlegoなどがありますが、それらは鍵や証明書をローカルディスクに格納するため、他のサーバで証明書を利用したい…

CoffeeScriptのアプリをDockerイメージにする

CoffeeScriptで書いたアプリをDockerイメージとしてリリースする方法を説明します。Dockerを使うとNode.jsのインストールや依存関係の解決を手動でやる必要がなくなるので、他の環境でさくっとアプリを実行したい時に便利です。 以下の簡単なスクリプトを例…

Docker Machineで既存サーバにDockerホストを構築する

Docker MachineはDockerホストを構築するためのツールです。VirtualBoxやVMwareなどの仮想化基盤、AWSやGCEなどのクラウドに対応しており、環境構築からDockerクライアントの接続設定まで自動的に行ってくれます。これによって気軽にDocker環境を調達できる…

GradleでビルドしてDockerで配布する

JGGUG LTにて、GradleでビルドしてDockerで配布するという内容を発表しました。ビールを片手にピザをつまみながら発表を聴くというゆるいスタイルで楽しかったです。 speakerdeck.com DockerがあればJVMをインストールする必要がなくなるので、GroovyやScala…

DockerでLinuxデスクトップを使ってみる

Linuxをサーバ用途に使う場合、クリーンな環境を保つため、XやGNOMEなどをインストールしないことが多いと思います。とはいえ、ちょっとした調査などでデスクトップ環境があれば作業効率が上がるケースもあります。そこで、Dockerを使って、独立した環境でLi…

docker run dockerfile/java:oracle-java7

JDK 7u65/8u11以降でバイトコード検証の不具合があったためこれまでDockerfileを自作していましたが、JDK 7u72/8u25で不具合が修正されたのでDocker Hubで公開されているイメージに乗り換えました。Docker HubではいくつかのJavaイメージが公開されています…

プロキシの内側でDockerを使う

プロキシの内側でDockerを使おうとすると以下の問題に直面します。 docker pullでプロキシ経由でイメージを取得させる必要がある。 docker runでアプリ実行時にプロキシ設定を与える必要がある。 docker buildでビルド実行時にプロキシ設定を与える必要があ…

DockerイベントをSlackに連携するアプリ

DockerイベントをSlackに連携するアプリ slack-docker を公開しています。 いつの間にかSlackのWebhook URLの形式が変わっていたので対応しました。 また、Slackにポストする情報を少し増やしてみました。 DockerとFigをインストールしている場合は簡単に起…

Dockerコンテナの起動や停止をトリガーにして処理を実行する

Dockerホストで新しいコンテナが起動したり既存のコンテナが停止したタイミングで何らかの処理を実行したい場合があります。例えば、リバースプロキシの設定を反映したり、コンテナのURLをレビュアに通知したりといった用途が考えられます。 本記事ではdocke…

DockerイベントをSlackに連携するアプリを作った

Dockerホストのコンテナ起動停止イベントをSlackに連携するアプリを作りました。 例 くじらがつぶやきます。 使い方 Slackの設定ページから Incoming WebHook を作成してください。トークンをメモしておきます。 このアプリは Docker Hub に公開しています。…

Dockerfileでソフトウェアの実行環境や実行方法を明示する

現在、ソースコードと一緒にビルドスクリプトを置くことで、ソフトウェアのビルド方法を明示することが慣習になっています。 今後、リポジトリにソースコードと一緒にDockerfileを置くことで、ソフトウェアの実行環境や実行方法を明示することが一般的になる…

SSHログインごとに独立したコンテナを割り当てる

SSHのログインごとに独立したコンテナを割り当てる方法を書きます。 手順 まず、適当なユーザを作って公開鍵でログインできるようにしておきます。 sudo useradd -m -G docker newworld sudo -u newworld -i mkdir -m 700 .ssh sudo -u newworld -i tee .ssh…

実行中のコンテナと同じ名前空間でプロセスを実行する

Dockerで実行中のコンテナに入って調査するにはnsenterを使います。正確には、nsenterコマンドを使って、コンテナと同じ名前空間でプロセスを実行します。 nsenterコマンドにはコンテナのPIDや諸々の引数を渡す必要があるので、下記を .bashrc や .zshrc に…