- 投稿日:2021-01-01T23:42:05+09:00
PHPをvscode remote containerで開発したかった
はじめLaravel入れていたが、template的に使えるものが欲しかったので作った。
https://github.com/moeyashi/template-php-on-vscode-remote-container
Laravel入れたバージョンも作ろうかなと思います。
2020-01-02 追記
Laravel入れました。勢いあまってlaravel/ui authまで入った。
https://github.com/moeyashi/template-laravel-on-vscode-remote-container
- 投稿日:2021-01-01T22:38:19+09:00
Dockre コマンド
Docker Hub のイメージを検索 (search)
Docker Hub から使いたいイメージを取得する (pull)
イメージからコンテナを生成して起動 (run)
コンテナ内でコマンド実行 (exec)
コンテナを停止 (stop)
コンテナをイメージ化 (commit)
いらなくなったらコンテナを削除 (rm)
いらなくなったらイメージを削除 (rmi)その他コマンド
取得済みイメージ一覧 (images)
実行中コンテナ一覧 (ps)
停止中も含めた全てのコンテナ一覧 (ps -a)
停止中のコンテナを起動 (start)
ホストとコンテナ間でのファイルコピー (cp)
- 投稿日:2021-01-01T22:38:19+09:00
Docker コマンド
Docker Hub のイメージを検索 (search)
Docker Hub から使いたいイメージを取得する (pull)
イメージからコンテナを生成して起動 (run)
コンテナ内でコマンド実行 (exec)
コンテナを停止 (stop)
コンテナをイメージ化 (commit)
いらなくなったらコンテナを削除 (rm)
いらなくなったらイメージを削除 (rmi)その他コマンド
取得済みイメージ一覧 (images)
実行中コンテナ一覧 (ps)
停止中も含めた全てのコンテナ一覧 (ps -a)
停止中のコンテナを起動 (start)
ホストとコンテナ間でのファイルコピー (cp)
- 投稿日:2021-01-01T22:29:42+09:00
Next.jsをdocker-compose upしたい!
はじめに
最近、開発環境をすべてdockerで完結させれればローカルが綺麗な状態に維持できる事に気がついたのでDockerでやりたがりがちです。
そこで、話題のNext.jsをdocker-composeで立ち上げてみましたので、自分用備忘録として残して置こうと思います環境
macOS High Sierra v10.13.6 Docker version 19.03.8 docker-compose version 1.25.5実装
docker上で全部完結させたいです
準備
新しくプロジェクト用ディレクトリを作り、その下に下記2つのファイルを置いてください。
Dockerfile と docker-compose.yml です。
docker-compose.yml の command にあるディレクトリ移動コマンドは、プロジェクトの名前に応じて適宜変更してください。今回はsample-app
とします。DockerfileFROM node:14.15.3-alpine WORKDIR /usr/src/appdocker-compose.ymlversion: '3' services: node: build: context: . dockerfile: Dockerfile volumes: - ./:/usr/src/app command: sh -c "cd sample-app && npm run dev" ports: - "3000:3000"現状です
$ ls Dockerfile docker-compose.ymlcreate-next-appコマンドをインストール
create-next-appコマンドをインストールします。
$ docker-compose run --rm node npm install create-next-appcreate-next-appコマンドを実行
これでnextアプリを作ります。
create-next-app は create-react-app と違ってインストール先のディレクトリ指定できないようなので、アプリ名は docker-compose.yml の command で指定したディレクトリ名と同じにしてください
(もし、インストール先のディレクトリ指定できる場合は教えて下さい。。)$ docker-compose run --rm node npx create-next-app sample-appdocker-compose up 実行
無事にnext-appのインストールが完了したら、アプリが起動できるはずです。
Welcomet to Next.js!
が出れば成功です。$ docker-compose up終わりに
今回はdocker-composeを使ってnext.jsの開発環境を構築しました。
docker-composeを使うと、APIコンテナ等と連携できるので、とても便利だなと思っています。
create-next-appコマンドもディレクトリ指定できるようにならないかな。
- 投稿日:2021-01-01T22:20:03+09:00
dockerに苦労した話
今回の教材
課題に取り組む前にLaravelのMigrateで沼にハマる
Reset
docker desktop のアンインストール
スタート -> 設定 -> アプリ(ふつーに消えてくれる)
explorerで普通に消そうとするとブルースクリーンが出て再起動になり、永遠に消せない(この時代にブルースクリーンなんて久しぶりに見たわ...)。powershell管理者モードでバチンと消すしか無いらしい
learning-laravel-tddというディレクトリが基準PS C:\WINDOWS\system32> cd D:\OneDrive\dev PS D:\OneDrive\dev> rm -Force learning-laravel-tddDocker Desktop for Windows のインストール
https://hub.docker.com/editions/community/docker-ce-desktop-windows/
インストール自体はすんなりいくDocker 用 git リポジトリのクローン
OneDrive\dev>$ mkdir learning-laravel-tdd $ cd learning-laravel-tdd $ git clone https://github.com/nunulk/learning-laravel-tdd-docker docker $ mkdir app現在の状態
learning-laravel-tdd ├── app └── dockerDockerを起動してからやってね$ cd docker $ cp .env.example .env $ docker-compose up -dPortのかぶりを解決する(DB_PORTを3308に)
僕の場合は 3306 がかぶっていることがわかった(普段pythonで使ってるから)
learning-laravel-tdd\docker\.envCOMPOSE_PROJECT_NAME=learning-laravel-tdd APP_PATH=../app TZ=Asia/Tokyo WEB_PORT=80 - DB_PORT=3306 + DB_PORT=3308 DB_DATABASE=learning_laravel_tdd DB_USERNAME=root DB_PASSWORD=root DB_TESTING_DATABASE=learning_laravel_tdd_testing DB_TESTING_PORT=3307 DB_TESTING_USERNAME=root DB_TESTING_PASSWORD=rootするとDockerのコントロールパネルでstartしたときに全部つく
動作確認
以下のコマンドを実行して、すべてのコンテナが起動しているかどうか確認
learning-laravel-tdd\docker>$ docker-compose ps Name Command State Ports ------------------------------------------------------------------------------------------------------------- learning-laravel-tdd_app_1 docker-php-entrypoint php-fpm Up 9000/tcp learning-laravel-tdd_db-testing_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3307->3306/tcp, 33060/tcp learning-laravel-tdd_db_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3308->3306/tcp, 33060/tcp learning-laravel-tdd_web_1 nginx -g daemon off; Up 0.0.0.0:80->80/tcpアプリケーションの初期化
learning-laravel-tdd\docker>$ docker exec -it learning-laravel-tdd_app_1 ash # composer create-project --prefer-dist "laravel/laravel=7.*" .learning-laravel-tdd\app\.env# 中略 LOG_CHANNEL=stack - DB_CONNECTION=mysql - DB_HOST=127.0.0.1 - DB_PORT=3306 - DB_DATABASE=laravel - DB_USERNAME=root - DB_PASSWORD= + DB_CONNECTION=mysql + DB_HOST=db + DB_PORT=3306 + DB_DATABASE=learning_laravel_tdd + DB_USERNAME=root + DB_PASSWORD=root + DB_TESTING_HOST=db-testing + DB_TESTING_PORT=3306 + DB_TESTING_DATABASE=learning_laravel_tdd_testing + DB_TESTING_USERNAME=root + DB_TESTING_PASSWORD=root BROADCAST_DRIVER=log # 中略learning-laravel-tdd\app\config\database.php'mysql' => [ 'driver' => 'mysql', 'url' => env('DATABASE_URL'), 'host' => env('DB_HOST', '127.0.0.1'), - 'port' => env('DB_PORT', '3306'), + 'port' => env('DB_PORT', '3308'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'prefix_indexes' => true, 'strict' => true, 'engine' => null, 'options' => extension_loaded('pdo_mysql') ? array_filter([ PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), ]) : [], ], + 'mysql_testing' => [ + 'driver' => 'mysql', + 'host' => env('DB_TESTING_HOST', '127.0.0.1'), + 'port' => env('DB_TESTING_PORT', '3307'), + 'database' => env('DB_TESTING_DATABASE', 'forge'), + 'username' => env('DB_TESTING_USERNAME', 'forge'), + 'password' => env('DB_TESTING_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_unicode_ci', + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], 'pgsql' => [ 'driver' => 'pgsql', 'url' => env('DATABASE_URL'),learning-laravel-tdd\app\phpunit.xml<server name="CACHE_DRIVER" value="array"/> - <!-- <server name="DB_CONNECTION" value="sqlite"/> --> - <!-- <server name="DB_DATABASE" value=":memory:"/> --> + <server name="DB_CONNECTION" value="mysql_testing"/> + <server name="DB_DATABASE" value="learning_laravel_tdd_testing"/> <server name="MAIL_MAILER" value="array"/>Models ディレクトリの作成と User.php の移動
Laravel は、デフォルトでは Model クラスを artisan コマンドで生成すると app ディレクトリ直下に生成しますが、本教材では、Models ディレクトリを作って、そこに配置していきます。インストールで自動的に作られる User.php をあらかじめ Models ディレクトリに移しておきましょう。
まずは以下のコマンドを実行してディレクトリを作成します(コンテナ側でもホスト側でもどちらでも大丈夫です)。
learning-laravel-tdd\app# mkdir app/Models続いて、app/User.php を app/Models 以下へ移動し、名前空間を変更します。
learning-laravel-tdd\app\Models\User.phpnamespace App\Models;User クラスを参照している箇所の名前空間もあわせて変更します。
変更するのは以下の2つのファイルです。
learning-laravel-tdd\app\config\auth.php'providers' => [ 'users' => [ 'driver' => 'eloquent', - 'model' => App\User::class, + 'model' => App\Models\User::class, ],learning-laravel-tdd\app\database\factories\UserFactory.php- use App\User; + use App\Models\User;config is ignored
learning-laravel-tdd\docker\db\my.cnf
を読み取り専用にする
Windowsだけの問題らしいmysqld: [Warning] World-writable config file '/etc/mysql/my.cnf' is ignored. がでる
[Docker+Windows]mysqlのdockerイメージがmy.cnfのマウントのエラーで起動しない時の対処法アプリケーションの確認
最後に、アプリケーションが動作するか確認するため、コンテナ内で以下のコマンドを実行してください。
/app # php artisan migrate
- 投稿日:2021-01-01T21:55:40+09:00
clang++ docker upgrade
docker(204) gcc(gnu), clang(llvm)コンパイルエラー・警告比較(4) R_07_04.c
https://qiita.com/kaizen_nagoya/items/73b9f16638273a74d807で使いっていたdocker上のclang++をUpgradeしょうとしたらエラーが出た。
bin/bash# apt update; apt -y upgrade ... # clang++ --version clang version 7.0.1-8+deb10u2 (tags/RELEASE_701/final) Target: x86_64-pc-linux-gnu Thread model: posix InstalledDir: /usr/bin # apt upgrade clang++ Reading package lists... Done Building dependency tree Reading state information... Done Note, selecting 'librust-bindgen+testing-only-libclang-5-dev' for regex 'clang+' Note, selecting 'librust-clang-sys-0+clang-3-6-dev' for regex 'clang+' Note, selecting 'librust-clang-sys-0.27.0+gte-clang-6-0-dev' for regex 'clang+' Note, selecting 'clang-modernize-6.0' for regex 'clang+' Note, selecting 'clang-tidy-6.0' for regex 'clang+' Note, selecting 'librust-bindgen-0+testing-only-libclang-5-dev' for regex 'clang+' Note, selecting 'librust-clang-sys-0.27.0+default-dev' for regex 'clang+' Note, selecting 'clang' for regex 'clang+' Note, selecting 'arcanist-clang-format-linter' for regex 'clang+' Note, selecting 'librust-clang-sys-0.27.0+clang-4-0-dev' for regex 'clang+' Note, selecting 'librust-bindgen+testing-only-libclang-3-9-dev' for regex 'clang+' Note, selecting 'librust-clang-sys-0.27+clang-4-0-dev' for regex 'clang+' Note, selecting 'clang-tools-6.0' for regex 'clang+' Note, selecting 'librust-clang-sys-dev' for regex 'clang+' ... clang is already the newest version (1:7.0-47). clang-7 is already the newest version (1:7.0.1-8+deb10u2). clang-7 set to manually installed. libclang-common-7-dev is already the newest version (1:7.0.1-8+deb10u2). libclang-common-7-dev set to manually installed. libclang1-7 is already the newest version (1:7.0.1-8+deb10u2). libclang1-7 set to manually installed. Calculating upgrade... Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: python-clang-6.0 : Conflicts: python-clang-x.y python-clang-7 : Conflicts: python-clang-x.y E: Broken packages # apt remove clang Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: clang 0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. After this operation, 23.6 kB disk space will be freed. Do you want to continue? [Y/n] y (Reading database ... 28587 files and directories currently installed.) Removing clang (1:7.0-47) ...LLVM Debian/Ubuntu nightly packages
https://apt.llvm.org# apt-get install clang-format clang-tidy clang-tools clang clangd libc++-dev libc++1 libc++abi-dev libc++abi1 libclang-dev libclang1 liblldb-dev libllvm-ocaml-dev libomp-dev libomp5 lld lldb llvm-dev llvm-runtime llvm python-clang Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package clangd #gccのdockerを入れてやり直した。
# wget https://apt.llvm.org/llvm.sh # chmod +x llvm.sh # sudo ./llvm.sh 10 + needed_binaries=(lsb_release wget add-apt-repository) + missing_binaries=() + for binary in "${needed_binaries[@]}" + which lsb_release + missing_binaries+=($binary) + for binary in "${needed_binaries[@]}" + which wget + for binary in "${needed_binaries[@]}" + which add-apt-repository + missing_binaries+=($binary) + [[ 2 -gt 0 ]] + echo 'You are missing some tools this script requires: lsb_release' add-apt-repository You are missing some tools this script requires: lsb_release add-apt-repository + echo '(hint: apt install lsb-release wget software-properties-common)' (hint: apt install lsb-release wget software-properties-common) + exit 4 # apt install lsb-release wget software-properties-common # sudo ./llvm.sh 10 ... Reading package lists... Done + apt-get install -y clang-10 lldb-10 lld-10 clangd-10 Reading package lists... Done Building dependency tree Reading state information... Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: lldb-10 : Depends: liblldb-10 (>= 1:9~svn298832-1~) but it is not going to be installed Depends: python3-lldb-10 but it is not going to be installed E: Unable to correct problems, you have held broken packages.いまここ
Installing Clang 10 on Docker container
https://baykara.medium.com/installing-clang-10-in-a-docker-container-4c24a4538af2Clang 10 in a Docker container for C++17 and C++20 development
https://solarianprogrammer.com/2017/12/14/clang-in-docker-container-cpp-17-development/
- 投稿日:2021-01-01T21:14:52+09:00
【composer】【Laravel】メモリ不足でインストール出来ない時の対処法
概要
Composerを使用してLaravel Breezeをインストールする際にエラーが発生。
実行したコマンド
composer require laravel/breeze --dev返ってきたエラー
Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/bin/composer/src/Composer/DependencyResolver/Solver.php on line 223環境
Laravel Framework 8.20.1
Docker version 20.10.0
Composer version 1.10.19今回のエラー内容
- どうやらメモリ不足でインストールできない様子。
解決方法
実行したコマンド
php -d memory_limit=-1 /usr/bin/composer require laravel/breeze --dev-d memory_limit=-1とすることで、メモリを無制限でコマンドを実行することができる様子。
composerのトラブルシューティングにも記載がありました。
Memory limit errorsまとめ
phpのコンテナのdockerファイルがあるディレクトリに、php.iniを作成して設定を書き換えても対応できそう
php.inimemory_limit = -1
- 投稿日:2021-01-01T18:09:33+09:00
DockerでRails + MySQLの環境構築
概要
https://docs.docker.com/compose/rails/ をMySQL用に作り替える。
手順:
- 構成ファイルの準備
- Dockerfile作成
- Gemfile作成
- entrypoint.sh作成
- docker-compose.yaml作成
- ビルド
- railsプロジェクトの初期化
- imageの更新
- DBと接続
- 表示確認
構成ファイルの準備
Dockerfile作成
FROM ruby:2.5 RUN apt-get update -qq && apt-get install -y nodejs build-essential libpq-dev WORKDIR /app COPY Gemfile /app/Gemfile COPY Gemfile.lock /app/Gemfile.lock RUN bundle install COPY . /app # Add a script to be executed every time the container starts. COPY entrypoint.sh /usr/bin/ RUN chmod +x /usr/bin/entrypoint.sh ENTRYPOINT ["entrypoint.sh"] EXPOSE 3000 # Start the main process. CMD ["rails", "server", "-b", "0.0.0.0"]Gemfile作成
プロジェクトルートにGemfileを作っておく
source 'https://rubygems.org' gem 'rails', '~>5'
Gemfile.lock
を作っておくtouch Gemfile.lockentrypoint.sh作成
#!/bin/bash set -e # Remove a potentially pre-existing server.pid for Rails. rm -f /myapp/tmp/pids/server.pid # Then exec the container's main process (what's set as CMD in the Dockerfile). exec "$@"docker-compose.yaml作成
db_data
としてvolumeを作って、DBデータを永続化version: "3" services: db: image: mysql:8.0 volumes: - db_data:/var/lib/mysql command: --default-authentication-plugin=mysql_native_password ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: root MYSQL_USER: admin MYSQL_PASSWORD: password web: build: . command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" volumes: - .:/app ports: - "3000:3000" depends_on: - db volumes: db_data:ビルド
Railプロジェクトつくる。
railsプロジェクトの初期化
webで rails new を実行して、railsを初期化。
Gemfileが自動的に更新される。docker-compose run --no-deps web rails new . --force --database=mysqlimageの更新
Gemfileが更新されたので、イメージを再度ビルド。
docker-compose buildDBと接続
config/database.yml
にDB設定を書き込むdefault: &default adapter: mysql2 encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: root host: db development: <<: *default database: app_development test: <<: *default database: app_test production: <<: *default database: app_production username: app password: <%= ENV['APP_DATABASE_PASSWORD'] %>表示確認
コンテナ立ち上げ
docker-compose up -d
DB作成
docker-compose run web rake db:createhttp://localhost:3000 に接続して動作確認。
- 投稿日:2021-01-01T17:18:03+09:00
centos6を使っていたdocker環境でサポート切れを対応する
原因
12月に入ってから今まで使えていたDocker環境が立ち上げられなくなっていたので調べたところ、centos6が11月末でサポート切れ(End Of Life)になったことに伴いepelパッケージが導入できなくなっていた。
変更前
RUN rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpmリポジトリの場所が404になっていたので、アーカイブのディレクトリを参照するように変更。
変更後
FROM centos:6 RUN sed -i "s|#baseurl=|baseurl=|g" /etc/yum.repos.d/CentOS-Base.repo RUN sed -i "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-Base.repo RUN sed -i "s|http://mirror\.centos\.org/centos/\$releasever|https://vault\.centos\.org/6.10|g" /etc/yum.repos.d/CentOS-Base.repo RUN rpm -ivh http://dl.fedoraproject.org/pub/archive/epel/6/i386/epel-release-6-8.noarch.rpm参考にした記事
http://smoogespace.blogspot.com/2020/10/rhel-6centos-6scilin-6epel-6-end-of.html
https://qiita.com/y-do/items/b23d24a647cb99528b16ほんとはサポート切れに伴ってcentos7にアップデートするのがベストだと思いますが、大人の事情でできないやつもありますよね。。
- 投稿日:2021-01-01T15:09:12+09:00
Gemを追加してbuildしたら「Could not find XXX in any of the sources」のエラーが出てハマった時に行ったこと
概要
「Could not find XXX in any of the sources」が出て1時間半ほどハマったので解決の過程をメモとして残しておく。
状況
「rails-controller-testing」をGemfileに追加してdocker-compose buildし、ビルドが完了したのを確認してテストを実行したところエラーをはいた。
Could not find rails-controller-testing-1.0.5 in any of the sources Run `bundle install` to install missing gems.追加したGemが見つからないと言われてるらしい。指示に従ってdocker-compose run web bundle installを実行。再びテストを実行するも同じエラーを吐いた。
試したこと
・Gemfileで指定されてる書き方をしているか
→問題なし。指定通りに記載されている。
・rails-controller-testing-1.0.5のバージョンは対応しているか
→rubygems.orgで確認したが、1.0.5は対応してるので問題なし。
・springを停止して試したらどうなるか
→springを停止しようとすると上記のエラーを吐くのでそもそも停止できない。
・bundleのパスは正しいか
→which bundleで確認したが、./rbenv配下をみてるので問題なし。
・変にキャッシュが残っているんじゃないか
→docker-compose build —no-cacheを実行するも変わらず。解決したやつ
Gemfile.lockを削除して再度bundle installし、テストを実行したところ別のエラーを吐いた。
ERROR: No container found for web_1今度はコンテナが見つからないと言われているらしい。
docker-compose upでコンテナを起動してどんなログが出るか確認してみることに。そしたら以下のエラーを吐いているのを確認。web_1 | Could not find sass-rails-5.1.0 in any of the sources web_1 | Run `bundle install` to install missing gems. rails_web_1 exited with code 7今度は別のGemが見つからないと言われてるらしい。。。
今回も指示に従ってbundle installしてコンテナを再起動したけどエラーは変わらず。
bundle installでバージョンが変わったのかと思い、rubygems.orgでsass-railsのバージョンを確認してみるも、5.1.0は対応している。
installがダメだったので、何となくbuildを試してみたらエラーが消えて正常にコンテナを起動できた。テストを実行したところ無事にテストできた。
Finished in 0.67023 seconds (files took 17.96 seconds to load) 3 examples, 0 failures結論
原因もなぜ解決できたのかも全くわからないけど、僕の場合はGemfile.lockを削除してbundle installとbuildすることで解決できた。
「Could not find XXX in any of the sources」とか情報少なすぎだしもうちょっと長いエラー吐いて欲しい。
参考記事
https://carefree-se.hatenablog.com/entry/2015/07/22/125904
https://qiita.com/jnchito/items/44ab1df134369ed76911
https://qiita.com/nakanowax/items/fe07e8ccd1721befebeb
https://fuqda.hatenablog.com/entry/2019/03/21/204118
- 投稿日:2021-01-01T14:48:23+09:00
HerokuにDockerのコンテナをpushするときに出たエラー「no basic auth credentials」の解決策
- 投稿日:2021-01-01T11:12:07+09:00
Docker上のRailsでコントローラーの変更がブラウザに反映されない時の対処法
問題
controller.rb
の変更がブラウザに反映されない。
コンテナを再起動すれば反映されるが、毎回再起動するのは手間がかかる。環境
Windows 10 home
Docker for Windows
Rails 6.1
Ruby 2.7
解決策
config\environments\development.rb
内の
config.file_watcher = ActiveSupport::EventedFileUpdateChecker
を下記コードに修正する。config.file_watcher = ActiveSupport::FileUpdateCheckerわからないこと
下記コードを記載しても解決できる。
Railsガイドを見ても上記コードとの違いがわからなかったので、違いが分かる人がいましたら、ご教授いただければ幸いです。config.reload_classes_only_on_change = false参照:『Railsガイド』- Rails アプリケーションを設定する
参考
- 投稿日:2021-01-01T03:31:15+09:00
laravel-filemanagerをインストールするときにつまづいたこと
CKEditorを導入
<textarea id="ckeditor" name="pageBody"></textarea> {{-- CKEditor --}} <script src="//cdn.ckeditor.com/4.15.0/full/ckeditor.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> <script src="js/ckeditor.js"></script>$(function () { // エディタへの設定を適用する CKEDITOR.replace("ckeditor", { uiColor: "#EEEEEE", height: 400, // スペルチェック機能OFF scayt_autoStartup: false, // Enterを押した際に改行タグを挿入 enterMode: CKEDITOR.ENTER_BR, // Shift+Enterを押した際に段落タグを挿入 shiftEnterMode: CKEDITOR.ENTER_P, // idやclassを指定可能にする allowedContent: true, // ファイルマネージャー関連 filebrowserImageBrowseUrl: "/laravel-filemanager?type=Images", filebrowserImageUploadUrl: "/laravel-filemanager/upload?type=Images&_token=", filebrowserBrowseUrl: "/laravel-filemanager?type=Files", filebrowserUploadUrl: "/laravel-filemanager/upload?type=Files&_token=", // preコード挿入時 format_pre: { element: "pre", attributes: { class: "code", }, }, // タグのパンくずリストを削除 removePlugins: "elementspath", // webからコピペした際でもプレーンテキストを貼り付けるようにする forcePasteAsPlainText: true, // 自動で空白を挿入しないようにする fillEmptyBlocks: false, // タブの入力を無効にする tabSpaces: 0, }); $(function () { // エディタへの設定を適用する CKEDITOR.replace("ckeditor", { uiColor: "#EEEEEE", height: 400, // スペルチェック機能OFF scayt_autoStartup: false, // Enterを押した際に改行タグを挿入 enterMode: CKEDITOR.ENTER_BR, // Shift+Enterを押した際に段落タグを挿入 shiftEnterMode: CKEDITOR.ENTER_P, // idやclassを指定可能にする allowedContent: true, // ファイルマネージャー関連 filebrowserImageBrowseUrl: "/laravel-filemanager?type=Images", filebrowserImageUploadUrl: "/laravel-filemanager/upload?type=Images&_token=", filebrowserBrowseUrl: "/laravel-filemanager?type=Files", filebrowserUploadUrl: "/laravel-filemanager/upload?type=Files&_token=", // preコード挿入時 format_pre: { element: "pre", attributes: { class: "code", }, }, // タグのパンくずリストを削除 removePlugins: "elementspath", // webからコピペした際でもプレーンテキストを貼り付けるようにする forcePasteAsPlainText: true, // 自動で空白を挿入しないようにする fillEmptyBlocks: false, // タブの入力を無効にする tabSpaces: 0, }); }); // 保存アイコンの無効化 CKEDITOR.plugins.registered["save"] = { init: function (editor) { var command = editor.addCommand("save", { modes: { wysiwyg: 1, source: 1 }, exec: function (editor) { if (My.Own.CheckDirty()) My.Own.Save(); else alert("No changes."); }, }); editor.ui.addButton("Save", { label: "", command: "save" }); }, }; });CKEditorに画像のアップロード機能を導入する
インストールしようとするとエラーが出力された
composer require unisharp/laravel-filemanager Your requirements could not be resolved to an installable set of packages. Problem 1 - Installation request for unisharp/laravel-filemanager ^2.2 -> satisfiable by unisharp/laravel-filemanager[v2.2.0]. - unisharp/laravel-filemanager v2.2.0 requires ext-exif * -> the requested PHP extension exif is missing from your system.
- PHPで画像からEXIF情報を取得するためにEXIFモジュールが必要らしい
DockerFileに以下を追加し再度ビルドする
RUN docker-php-ext-install exif RUN docker-php-ext-configure exif \ --enable-exifもう一度インストールすると無事に成功した!
composer require unisharp/laravel-filemanager
- 投稿日:2021-01-01T03:31:15+09:00
Laravel-filemanagerをインストールするときにつまづいたこと
CKEditorを導入
<textarea id="ckeditor" name="pageBody"></textarea> {{-- CKEditor --}} <script src="//cdn.ckeditor.com/4.15.0/full/ckeditor.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> <script src="js/ckeditor.js"></script>$(function () { // エディタへの設定を適用する CKEDITOR.replace("ckeditor", { uiColor: "#EEEEEE", height: 400, // スペルチェック機能OFF scayt_autoStartup: false, // Enterを押した際に改行タグを挿入 enterMode: CKEDITOR.ENTER_BR, // Shift+Enterを押した際に段落タグを挿入 shiftEnterMode: CKEDITOR.ENTER_P, // idやclassを指定可能にする allowedContent: true, // ファイルマネージャー関連 filebrowserImageBrowseUrl: "/laravel-filemanager?type=Images", filebrowserImageUploadUrl: "/laravel-filemanager/upload?type=Images&_token=", filebrowserBrowseUrl: "/laravel-filemanager?type=Files", filebrowserUploadUrl: "/laravel-filemanager/upload?type=Files&_token=", // preコード挿入時 format_pre: { element: "pre", attributes: { class: "code", }, }, // タグのパンくずリストを削除 removePlugins: "elementspath", // webからコピペした際でもプレーンテキストを貼り付けるようにする forcePasteAsPlainText: true, // 自動で空白を挿入しないようにする fillEmptyBlocks: false, // タブの入力を無効にする tabSpaces: 0, }); };CKEditorに画像のアップロード機能を導入する
インストールしようとするとエラーが出力された
composer require unisharp/laravel-filemanager Your requirements could not be resolved to an installable set of packages. Problem 1 - Installation request for unisharp/laravel-filemanager ^2.2 -> satisfiable by unisharp/laravel-filemanager[v2.2.0]. - unisharp/laravel-filemanager v2.2.0 requires ext-exif * -> the requested PHP extension exif is missing from your system.
- PHPで画像からEXIF情報を取得するためにEXIFモジュールが必要らしい
DockerFileに以下を追加し再度ビルドする
RUN docker-php-ext-install exif RUN docker-php-ext-configure exif \ --enable-exifもう一度インストールすると無事に成功した!
composer require unisharp/laravel-filemanager
- 投稿日:2021-01-01T03:05:18+09:00
Docker環境でDBに接続するとcould not find driverが出たときの対処方法
DBに接続する処理を作成
<?php define('DB_NAME', 'データベース名'); define('USER_NAME', 'ユーザー名'); define('USER_PASS', 'パスワード'); try { $pdo = new PDO( DB_NAME, USER_NAME, USER_PASS, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ, PDO::ATTR_EMULATE_PREPARES => false ] ); } catch (PDOException $e) { echo $e->getMessage(); exit; }接続すると下記のエラーが出力された
could not find driverドライバが見つからないようなので現在のドライバを確認してみる
php -m | grep pdo # pdo_sqlitepdo_mysqlがインストールされていないのが原因らしいのでDockerFileに処理を追加する
FROM php:7.2-fpm COPY php.ini /usr/local/etc/php/ # 追加 RUN docker-php-ext-install pdo_mysql再度ビルドすると無事に接続できた!