ERROR: http://dl-cdn.alpinelinux.org/alpine/vx.xx/main: temporary error (try again later)の対応
dockerでビルドしたら、次のようなエラーが出た。
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.11/main: temporary error (try again later) WARNING: Ignoring APKINDEX.70f61090.tar.gz: No such file or directory
バージョン番号などは変わるが、一旦出ると、このエラーが出続ける。
dockerを再起動したが、エラーは変わらず。
$ docker ps -a
してみると、
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2e0650c75024 446a65f7058a "/bin/sh -c 'apk upg…" 4 minutes ago Exited (12) 4 minutes ago lucid_khayyam b5a808c75de9 446a65f7058a "/bin/sh -c 'apk upg…" 5 minutes ago Exited (12) 5 minutes ago unruffled_shannon 4b6e6b3ac667 446a65f7058a "/bin/sh -c 'apk upg…" 6 minutes ago Exited (12) 6 minutes ago goofy_antonelli 85427430cf7f 446a65f7058a "/bin/sh -c 'apk upg…" 10 minutes ago Exited (12) 10 minutes ago affectionate_saha b0a3fdc23492 446a65f7058a "/bin/sh -c 'apk upg…" 11 minutes ago Exited (12) 11 minutes ago vibrant_visvesvaraya 2b93884dcdde 446a65f7058a "/bin/sh -c 'apk upg…" 12 minutes ago Exited (12) 12 minutes ago intelligent_lamarr 7de775293a70 446a65f7058a "/bin/sh -c 'apk upg…" 16 minutes ago Exited (12) 16 minutes ago tender_hugle ba7afe9872b2 446a65f7058a "/bin/sh -c 'apk upg…" 27 minutes ago Exited (12) 27 minutes ago hopeful_shtern 34a9408d6171 446a65f7058a "/bin/sh -c 'apk upg…" 29 minutes ago Exited (12) 29 minutes ago vigilant_stonebraker ...
status が Exited (12)のイメージを削除
$ docker rm `docker ps -a -q -f "exited=12"`
無事ビルドができるようになった。
参考
以下の解決策では、自分の環境では改善されなかったので、上記の方法を行った。
dockerコンテナ上のmariadbのバックアップとリストア
バックアップ
docker-compose
を使っていて、docker-compose ps
コマンドで確認できるコンテナの名前が db_1
だとすると、起動中のコンテナに対して
$ docker-compose exec db_1 mysqldump -u ユーザー名 -p -P ポート番号 -h ホスト(127.0.0.1) DB名 > DB名.dump_$(date +%Y%m%d%H%M%S).sql
で、日付時間をファイル名としたダンプファイルが生成される。パスワードを要求されるのでデータベースのパスワードを入力すること。
作成したら必ず ls -alh
でサイズを見る。小さければ失敗している。エディタで開いて確認。
リストア
まずコンテナにダンプファイルをコピーする。
docker ps
コマンドで確認できるコンテナの名前がdb_1
だとすると、起動中のコンテナに対して
docker cp ダンプファイル名 db_1:/
で、コンテナのルートディレクトリにコピーされる。
次に、コンテナに入ってリストア
$ docker-compose exec db_1 /bin/bash
% mysql -u ユーザー名 -p -D DB名 < ダンプファイル
docker上に作ったlaravelに環境変数を追加する際の手順
.env ファイルに環境変数を、
環境変数名=環境変数
の形で追加docker-compose.yml の該当コンテナの
environment
に、環境変数名=${環境変数名}
と追加。別名でも受けられるが混乱するので同一名にする。.env ファイルで設定した環境変数は必ず
config/*.php
で受ける。config/*.php
以外の場所でのenv()での呼び出しは、設定ファイルがキャッシュされるとすべてNULLを返すため(ドキュメントー設定)たとえば
config/hogehoge.php
内でhogehoge = env('HOGE', default)
と定義した場合には、`config('hogehoge')で呼び出せる。
javascriptの配列で重複を除く
const a = [1, 2, 2, 3, 3, 5, -1, "a"] const uniq = Array.from(new Set(a)); または、 const uniq = [...new Set(a)];
配列からSetオブジェクトを作成し、再度配列に戻す。
Array.from() メソッドは、配列風オブジェクトや反復可能オブジェクトから配列を作る標準組み込み関数。
スプレッド構文 [... ]は反復可能オブジェクトから配列を作成するので、この場合はArray.from() メソッドと等価。
参考
2つの配列から重複した要素を抽出する
JavaScriptの配列操作に役立つ13のヒントとトリック - Qiita様より
const numOne = [0, 2, 4, 6, 8, 8]; const numTwo = [1, 2, 3, 4, 5, 6]; const firstValueSet = new Set( numOne ) ; const duplicatedValues = numTwo.filter( item => firstValueSet.has(item) ); console.log(duplicatedValues); // [2, 4, 6]