ソフトウェア -> Docker
結論 「docker build を実行する際の書き方」と「Dockerfile の書き方」の 2つ の書き方を双方とも適用する必要がある。 docker build を実行する際の書き方 RAILS_MASTER_KEY という環境変数に渡したいデータが格納済みとする。 $ docker build --secret id…
前提 Dockerイメージは Artifact Registry に保存し、リージョンは asia-northeast1(東京)とします Cloud Run のデプロイ先のリージョンは asia-northeast1(東京)とします 必要なもの サービスアカウントの認証用 JSON ファイルが必要です。以下のような…
結論 Dockerイメージ の保存場所には Artifact Registry を使うことを前提として、以下の権限がおそらく最小です。 Artifact Registry 管理者 サービス アカウントユーザー Cloud Run デベロッパー 画像
MySQL GitHub Action (mysql-action) とは github.com 結論 標題通りです。sudo service mysql restart しないと MySQL が起動しませんでした*1。 さらに起動を待つとより安全 以下の Issue にもあるように、起動を待つとより安全です。 github.com v8 以上…
具体例 on: push: jobs: my_job: runs-on: ubuntu-latest services: mysql: image: mysql:5.7 このとき、日本語が文字化けします。 どうするか 1. MySQL 8(以上)を使う MySQL 8(以上)のイメージを使えば解決します。 2. mirromutth/mysql-action@v1.1 を…
結論 マウントするだけのコンテナを適当なイメージから作って、それを用いて中身を見たり $ docker container cp すればいいです。 よく記事で見る、特権を使って中身を覗く方法も手っ取り早いと思います*1。 具体例 用いるイメージは Ubuntu 20.04 で特に問…
※2022/01/18現在の情報です 結論 VS Code Dev Container のメニューで Rebuild Container の項目があります。この項目はさらに以下の 2つ の項目に分かれます。 Remote-Containers: Rebuild Container Without Cache Remote-Containers: Rebuild Container …
結論 Dockerfile の最初の方で以下のように実行し、 /etc/apt/sources.list を書き換えてしまいます。なお以下の例は Ubuntu 20.04 の場合です。 RUN echo " deb http://jp.archive.ubuntu.com/ubuntu/ groovy main restricted\n\ deb-src http://jp.archive…
$ docker build するときの Dockerfile の置き場によっては ERROR [internal] load build definition from Dockerfile が出る
結論 標題のとおりです。たとえば /tmp/Dockerfile に置いてしまうとエラーが出ます。
結論 こちらの Issue のとおりです。 github.com 対応方法としては予めディレクトリを作っておくことですが、動的に生成する場合などにはスクリプトが必要になったりと余計な手間が増えるので、素直に -v を使うのが賢明ではないかと思います。
結論 とりあえずこの記事を見ればよいです。 qiita.com 以下は、上記の記事を実際にやってみて思ったことを書きます。 方法としては「うまくいく方法1 : ENTRYPOINTでuseraddでユーザーを作る」が良さそう もちろんケース・バイ・ケースではありますが、上記…
理由 CMD に実行コマンドを書くと、引数が使えなくなるからです。docker run 時に与えた引数は、CMD を上書きしてしまうからです 実行コマンドは ENTRYPOINT に書きましょう。 具体例 foo というコマンドを Docker で実行したいとします。完成形は以下のよう…
状況 $ docker-compose up foobar -d というコマンドを実行した際に $ docker-compose up -d が実行されてしまうという状況です。CI*1 で起きたことがあります。 どうするか -d オプションを先にもってくる。 $ docker-compose up -d foobar *1:GitHub Actio…
結論 公式リポジトリからバイナリを落とす。実行権限を付与する。 github.com どこに置くかは以下を参照。 github.com 最後に確認をしておきましょう。 $ docker compose version Docker Compose version v2.3.4 $ docker-compose version Docker Compose ve…
全体 Dockerfile で yarn install*1 をして node_modules 配下にライブラリがインストールされたイメージが作成されたとします。このイメージからコンテナを作成する場合、例えば /path/to:/app のようにボリュームを指定すると、せっかく作られた node_modu…
結論 devcontainer.json 内に、たとえば以下のように書きます。 { (中略) "postCreateCommand": ".devcontainer/devcontainer_entrypoint.sh" (中略) } 上記の devcontainer_entrypoint.sh 内に、Dockerfile の ENTRYPOINT の内容を移植すればよいかと思…
結論 表題のとおりです。 .bundle とか tmp/ とか vendor/ とかがローカル環境と混ざるとエラーが起き得ます*1。Docker 環境で使うディレクトリは Docker 環境だけで使いましょう。ローカル環境で使いたい場合には別途ディレクトリを作りましょう。 *1:gem …
結論 当該コンテナの環境変数に HTTPS_PROXY や HTTP_PROXY を追加します。 例 version: '3.8' services: foobar: (省略) environment: - HTTPS_PROXY=http://hoge.example.com:12345 - HTTP_PROXY=http://fuga.example.com:54321 (省略)
結論 steps の中で setup_remote_docker を実行(記述)した後、docker コマンドを実行します。 具体例 NG な例(setup_remote_docker を実行しない場合) setup_remote_docker を実行しないと次のようにエラーになります。 .circleci/config.yml は次のとお…
結論 1. 実行を停止する $ docker-compose down 2. docker-compose.yml に最新バージョンを記述する latest の場合はこの項目は飛ばして OK (省略) image: nextcloud:21.0.2 (省略) 3. 起動する 結構時間がかかります。 $ docker-compose up -d 注意点 …
DiscordChatExporter とは github.com 結論 以下のようにエラーが出ます。 $ docker run --rm tyrrrz/discordchatexporter:stable Unable to find image 'tyrrrz/discordchatexporter:stable' locally stable: Pulling from tyrrrz/discordchatexporter f7ec…
結論 heroku.yml を用いましょう。 devcenter.heroku.com 例えば、超単純な heroku.yml ならば以下のようになります*1。 build: docker: web: Dockerfile 補足 ざっくりと Web の記事を検索したところ、CLI 経由でのデプロイしか見当たらなかったので書きま…
状況 docker-compose.yml の volumes: が以下のように書かれていたとします。 volumes: - type: bind source: ./foo target: /var/lib/bar その上で、$ docker-compose up を実行した際に以下のようなエラーが出る場合を考えます。 $ docker-compose up ERRO…
Docker Registry とは 自前の Docker Hub です。 docs.docker.com 結論 環境変数に以下を追加します。 REGISTRY_HTTP_RELATIVEURLS=true 環境 この状況に陥った環境は以下のとおりです。 インターネット上に Docker Registry を作る(例えば my-docker-reg.e…
結論 Webインターフェイス を用いるためにはいくつかの選択肢がありますが、Raspberry Pi でも使えて*1、GitHub のスター数も考慮した結果、docker-registry-ui を用いることにしました。 github.com Raspberry Pi で docker-registry-ui を用いるための doc…
Docker Registry とは 要は自前で立てる Docker Hub です。公式に提供されています。 docs.docker.com 結論 以下のような docker-compose.yml になりました。 docker-compose.yml と同じディレクトリに registry ディレクトリと certs ディレクトリと auth …
理由 異なるサブネットから SSH して Docker コンテナを起ち上げたから 前提 他のサーバには問題ない 本当に「突然」のように感じた サーバは Raspberry Pi である エラーログとしては以下のような感じです $ systemctl status docker.service ● docker.serv…
結論 コンテナ側の /docker-entrypoint-initdb.d 配下に実行したいスクリプトを置きます。するとコンテナ作成時にそれらのスクリプトをファイル名の順番で実行してくれます。 コンテナ作成時にホスト側の適当なディレクトリにスクリプトファイルを詰め込み、…
動機 Raspberry Pi の MicroSD カード上で Docker を操作すると凄まじく遅く、また容量を食いまくるので、外部ストレージに移したいから。 結論 デフォルトの保存先である /var/lib/docker にシンボリックリンクを張ります。 具体的には以下の記事に書かれて…
結論 apt で入れます。 具体的方法 apt install を実行してインストールします。 $ sudo apt install -y docker-compose 正しくインストールされたかを確認します。 $ docker-compose -v docker-compose version 1.25.0, build unknown