20210123のdockerに関する記事は11件です。

LaradockでLaravel8の開発環境を構築する

前提

  • Mac を使っている
  • Git インストール済
  • Docker インストール済

できること

  • Laravel8の開発環境が構築できる
  • phpMyAdminでDBを参照できる

手順

  1. Laradockをローカル環境に複製し、環境設定ファイルを編集する
  2. Dockerコンテナを起動し、コンテナに入る
  3. Laravel8をローカル環境にインストールし、環境設定ファイルを編集する
  4. Laradockの環境設定ファイルを編集し、Dockerコンテナ再起動
  5. Laravel8phpMyAdminの表示を確認する

※コンテナはnginxPHP-FPMMysqlそしてphpMyAdminを用意します

構築する

1. Laradockをローカル環境に複製し、環境設定ファイルを編集する

Laradockを複製(複製場所は"/Users/任意の名前")

git clone https://github.com/LaraDock/laradock.git

環境設定ファイル(.env)を編集

cp env-example .env
vim .env

編集箇所と内容

DATA_PATH_HOST=.laradock/data
COMPOSE_PROJECT_NAME=project_name
MYSQL_VERSION=5.7.31

ファイル末尾に追記

DB_HOST=mysql

2. Dockerコンテナを起動し、コンテナに入る

Dockerコンテナを起動

docker-compose up -d nginx mysql phpmyadmin
docker-compose ps

Dockerコンテナに入る

docker exec -it river_web_workspace_1 bash
3. Laravel8をローカル環境にインストールし、環境設定ファイルを編集する

Laravel8をローカル環境にインストール(ディレクトリ名はsrc)

composer create-project laravel/laravel src

環境設定ファイル(.env)を編集

vim .env

編集箇所と内容

DB_HOST=mysql
DB_DATABASE=default
DB_USERNAME=default
DB_PASSWORD=secret

4. Laradockの環境設定ファイルを編集し、Dockerコンテナ再起動
exit
vim .env

編集箇所と内容

APP_CODE_PATH_HOST=../src

docker-compose up -d nginx
5. Laravel8phpMyAdminの表示を確認する

http://localhost/
http://localhost:8081/

データベース名:mysql
ユーザー:default
パスワード:secret

※DB編集する際は、先ずはルートではいり、上記ユーザーに編集権限を付与します

データベース名:mysql
ユーザー:root
パスワード:root

以上になります。:laughing:

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【docker build】unknown instructionでエラー

Note

unknown instruction: APT-GET'のエラーが出る。
Dockerfile内におけるRUNディレクティブで、改行のバックスラッシュが抜けている可能性あり。

NG

FROM ubuntu:18.04
RUN apt-get update -qq && ←
    apt-get install -y yarn curl gnupg2 npm nodejs

OK

FROM ubuntu:18.04
RUN apt-get update -qq && \ ←
    apt-get install -y yarn curl gnupg2 npm nodejs

参考文献

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

AWSへDockerホストのプロビジョニングをする際にcredentialsがない旨のエラーが表示される

AWSへDockerホストのプロビジョニングをする際に、アクセスキーやシークレットキーを記述したcredentialsファイルを作成して、AWSにDocker Engineが動作するインスタンス作成するコマンドを実行したところ、下記エラーが出力されました。

$ docker-machine create --driver amazonec2 --amazonec2-open-port 8000 --amazonec2-region ap-northeast-1 aws-sandbox
Error setting machine configuration from flags provided: amazonec2 driver requires AWS credentials configured with the --amazonec2-access-key and --amazonec2-secret-key options, environment variables, ~/.aws/credentials, or an instance role

これはcredentialsのファイルがないか、もしくは作成する権限がおかしいことを意味するエラーの模様。
AWSで作成したIAMユーザの権限はadmin権限を渡しているので特に問題がないため、credentialsファイルがどうやら悪さしているみたいです。

対策

調べたところ、credentialsファイルの置き場所が悪かったようです。
credentialsファイルはユーザのホームディレクトリ配下に作成しなければいけませんでした。

mkdir ~/.aws
vi ~/.aws/credentials

適当な作業ディレクトリにawsディレクトリを作成して、その配下にcredentialsファイルを作成しておりましたが、ユーザのホームディレクトリ配下にcredentialsファイルを作成してコマンドの実行ユーザに紐付けしなければ、当然AWSへインスタンス作成はできないですよね。

これで無事AWSへインスタンス作成が完了です。

$ docker-machine create --driver amazonec2 --amazonec2-open-port 8000 --amazonec2-region ap-northeast-1 aws-sandbox
Running pre-create checks...
Creating machine...
(aws-sandbox) Launching instance...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with ubuntu(systemd)...
Installing Docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env aws-sandbox
$ 

最後に

教材ではサラッと流されてしまうところ、一つ一つ重要視して進めていかないとうまくいかないですね。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

SQLServerだからといって諦めずに、CircleCIでテスト自動化する(2021年更新版)

はじめに

2017年に書いた「SQLServerだからといって諦めずに、CircleCIでテスト自動化する」が色々古かったので、アップデートしてみました。

尚、記事と合わせてソースコードも更新しました。
imunew/php-with-docker-mssql

変更点

変更したポイントを列挙していきます。

Microsoft SQL Server on Linuxが新しくなった

詳しくは「Docker内の php から SQL Server に接続する(2020年版)」を参照いただきたいのですが、DockerイメージとPHP用のドライバを更新しました。

FROM php:7.4

# Install basic packages and extensions
RUN apt-get update \
  && apt-get install -y zlib1g-dev libzip-dev wget gnupg \
  && docker-php-ext-install zip opcache

# Composer install
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer
ENV COMPOSER_ALLOW_SUPERUSER 1

# Install SQL Server extensions
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list
RUN apt-get update
RUN ACCEPT_EULA=Y apt-get install -y msodbcsql17 mssql-tools
RUN apt-get install -y unixodbc-dev libgssapi-krb5-2
RUN pecl install sqlsrv
RUN pecl install pdo_sqlsrv
RUN docker-php-ext-enable sqlsrv
RUN docker-php-ext-enable pdo_sqlsrv

CMD ['php']

CircleCIの設定ファイルをv1からv2

CircleCIの設定ファイルをv2形式で書き直しました。
以下のドキュメントが参考になりました。

circleci/config.yml
version: 2
jobs:
  test:
    docker:
      - image: php:7.4
        environment:
          DEFAULT_DSN: sqlsrv:Server=localhost;
          DEFAULT_USERNAME: sa
          DEFAULT_PASSWORD: p@ssw0rd
      - image: mcr.microsoft.com/mssql/server:2017-latest
        environment:
          ACCEPT_EULA: Y
          SA_PASSWORD: p@ssw0rd
    resource_class: medium
    steps:
      - run:
          name: Install packages and PHP extensions
          command: |
            apt-get update \
            && apt-get install -y zlib1g-dev libzip-dev unzip wget gnupg git \
            && docker-php-ext-install zip opcache
      - run:
          name: Install MSSQL PHP extensions
          command: |
            curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
            curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list
            apt-get update
            ACCEPT_EULA=Y apt-get install -y msodbcsql17 mssql-tools
            apt-get install -y unixodbc-dev libgssapi-krb5-2
            pecl install sqlsrv
            pecl install pdo_sqlsrv
            docker-php-ext-enable sqlsrv
            docker-php-ext-enable pdo_sqlsrv
      - run:
          name: Install composer
          command: curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer
      - checkout
      - run:
          name: Install dependencies
          command: |
            composer install --no-interaction --prefer-dist
      - run:
          name: Run Tests by phpunit
          command: |
            php app/bootstrap.php
            vendor/bin/phpunit
workflows:
  version: 2
  build-workflow:
    jobs:
      - test

docker-compose.ymlVersion 1からVersion 3

docker-compose.ymlのフォーマットが古かったので、Version 3で書き直しました。

docker-compose.yml
version: "3"

services:
  php:
    build: ./docker/php
    env_file: ./docker/php/.env
    volumes:
      - .:/app/
    working_dir: /app

  mssql:
    image: mcr.microsoft.com/mssql/server:2017-latest
    env_file: ./docker/mssql/.env
    ports:
      - "1433:1433"

おわりに

3年でこんなに変わるのかと思って調べてみたら、以下のような時系列でした。

ソフトウェアの寿命は本当に短いですね。
ではでは。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Docker x Express x PostgreSQL x Sequelize 環境構築メモ

検索したら意外とヒット少なかったので記事化

初学者ゆえ適切でないコードや表現があるかと思います。その際は優しくご指導いただけますと幸いです。

開発環境

  • macOS Catalina 10.15.7
  • Docker 20.10.2

作業ディレクトリ作成

Terminal
mkdir hoge/app
cd app
npm init

適当な場所に作業ディレクトリを作成&npm init
package nameとかは適当なものを選択。

server.js作成

Terminal
touch server.js
npm i --save express
server.js
const express = require("express");
const app = express();

app.get("/", (req, res) => {
  res.send("Hello World!");
});

app.listen(9000, () => {
  console.log("The app listening on port 5000");
});

nodemon設定

node server.jsだとserver.jsを書き換えるたびに再起動しなければならないため、nodemonを設定しておく。

Terminal
npm i --save nodemon
package.json
  "scripts": {
    "start": "nodemon server.js"
  }

node.jsのイメージを作成

node.jsの公式ドキュメントを参考にコンテナを作成する。

Dockerfile編集

Terminal
cd ..(appからhogeへ移動)
touch Dockerfile
Dockerfile
# ベースイメージ
FROM node:14.15.4

# 作業ディレクトリ
WORKDIR /usr/src

# packages.jsonを個別にコピーする理由は後述
COPY/packages*.json ./
RUN npm install

# その他のファイル群もコンテナへコピー
COPY / ./

EXPOSE 5000

# サーバースタート
CMD ["npm", "start"]

npm_modulesをignoreする

.dockerignore
npm_modules
npm-debug.log

npm_modulesをコピーするのは時間がかかるのでignoreして、先述のnpm installで作成する。

現在のhogeディレクトリ構成はこんな感じ

Screen Shot 2021-01-23 at 1.08.26.png

buildする

Terminal
docker build -t hoge/node .

-t: タグをつけるオプション(イメージの名前になる)

Terminal
Successfully built 英数字
Successfully tagged hoge/node:latest

↑こうなったらOK

コンテナ作成

Express、Postgresを組み合わせたコンテナを作成していく。

みんな大好きdocker-compose

Terminal
touch docker-compose.yml
touch .env
docker-compose.yml
version: "3"
services:
  app:
    # docker-compose up実行時に開始する関連サービス(上から順に実行)
    depends_on:
      - postgres
    # コンテナを実行するときの元となるimage(さっき作ったやつ)
    image: hoge/node
    # コンテナの名前
    container_name: "hoge_express-pg"
    # マウントするパス(ホストの相対パス:DockerfileのWORKDIRからの絶対パス)
    volumes:
      - ./app:/usr/src/app
    # ホストマシンにつなげるポート(ホスト:コンテナ)
    ports:
      - 5000:9000
    # 環境変数
    env_file: .env
    # コンテナの永続化
    tty: true

  postgres:
    image: postgres:13-alpine
    container_name: postgres
    ports:
      - 5432:5432
    volumes:
      - ./postgres/init:/docker-entrypoint-initdb.d
    env_file: .env
    hostname: postgres
    # rootにしないとあとで「権限ないで」って言われる
    user: root

  # ブラウザでdbを確認できるすごいヤツ(任意)
  pgadmin4:
    image: dpage/pgadmin4:4.20
    container_name: pgadmin4
    depends_on:
      - postgres
    ports:
      - 80:80
    volumes:
      - ./pgadmin:/var/lib/pgadmin/storage
    env_file: .env
    hostname: pgadmin4

volumesに指定したパスはホストマシンとコンテナとでファイルが共有されて便利。

.env
POSTGRES_USER=hoge
POSTGRES_PASSWORD=hoge
POSTGRES_INITDB_ARGS=--encoding=UTF-8

TZ=Asia/Tokyo

PGADMIN_DEFAULT_EMAIL=root
PGADMIN_DEFAULT_PASSWORD=root

POSTGRES_~: dbのログイン情報と設定
TZ: TimeZone
PGADMIN_DEFAULT_~: pgAdmin4のログイン情報

動作確認

Terminal
docker-compose up
Terminal
postgres  | 2021-01-23 01:24:24.380 JST [1] LOG:  database system is ready to accept connections
~
hoge_express-pg | [nodemon] starting `node server.js`
hoge_express-pg | The app listening on port 5000
~
pgadmin4  | [2021-01-22 16:24:29 +0000] [1] [INFO] Listening at: http://[::]:80

こんな感じに3つのコンテナの起動が確認できたらOK。

ブラウザ

ブラウザでlocalhost:5000にアクセスするとHello World!できる。
Screen Shot 2021-01-23 at 1.27.45.png

db作成

Ctrl+Cで一度コンテナを終了し、自動生成されたpostgres/initフォルダにSQLファイルを追加する。
ここに配置されたSQLはコンテナ開始時に実行されるので、db作成の他、初期データの設定にも便利。

Terminal
touch postgres/init/template.sql
postgres/init/template.sql
CREATE DATABASE development

作成したらもう一度docker-compose upしておく。

pgAdmin4初期設定(任意)

ブラウザでlocalhost:80にアクセス

Screen Shot 2021-01-23 at 2.02.39.png

こんな感じの画面が出るので、.envで設定したユーザー名とパスワードでログイン。

ちなみに、dpage/pgAdmin4:4は何故かこの段階でログインできない不具合があるようです(これに気づくのに一晩費やした)。

サーバー追加

ログインしたらAdd New ServerConnectionタブで
- Host: postgres
- Port: 5432
- Mentenance database: postgres
- Username: hoge
- Password: hoge

左のサーバー一覧にpostgresとその中にdevelopmentdbが表示されればOK。

もしコンテナ作成後に.envでパスワードなどを変更した場合は一度コンテナを削除してから再度接続を行う必要があるので注意。

Sequelize設定

ここからはコンテナ内で作業する(けどvolumesで共有されているのでほとんどの作業はホスト側でやっても平気←Docker使う意味は??
VSCodeでDockerの拡張機能を入れてると、ここから簡単にコンテナのbashを起動できる

Screen Shot 2021-01-23 at 1.30.34.png

各種パッケージインストール&Sequelize初期設定

/usr/src/app#
npm i --save sequelize sequelize-cli pg
npx sequelize-cli init

npx sequelize-cli initをすると、config, models, migrations, seedersフォルダが作成される

このディレクトリ名を見てわかるように、SequelizeはRubyのActiveRecordのようにdbのマイグレーションがJSでできるようになるスグレもの

config.json変更

/app/config/config.json
{
  "development": {
    "username": "hoge", ←.envで設定したdbのログイン情報
    "password": "hoge",
    "database": "development", ←dbの名前
    "host": "postgres",
    "dialect": "postgres"
  },
  "test": {
    省略
  },
  "production": {
    省略
  }
}

これでSequelizeの設定は完了。

Sequelizeでdbへアクセス

modelを作成

/usr/src/app#
npx sequelize-cli model:generate --name Post --attributes title:string,body:string

--name: model名
--attributes: modelが保有する属性(カラム)

migrations/日付-create-postmodels/post.jsの2つが自動生成されているのを確認する。

migrations/20210123053140-create-post
"use strict";
module.exports = {
  up: async (queryInterface, Sequelize) => {
    await queryInterface.createTable("Posts", {
      id: {
        allowNull: false,
        autoIncrement: true,
        primaryKey: true,
        type: Sequelize.INTEGER,
      },
      title: {
        type: Sequelize.STRING,
      },
      body: {
        type: Sequelize.STRING,
      },
      createdAt: {
        allowNull: false,
        type: Sequelize.DATE,
      },
      updatedAt: {
        allowNull: false,
        type: Sequelize.DATE,
      },
    });
  },
  down: async (queryInterface, Sequelize) => {
    await queryInterface.dropTable("Posts");
  },
};
models/post.js
"use strict";
const { Model } = require("sequelize");
module.exports = (sequelize, DataTypes) => {
  class Post extends Model {
    /**
     * Helper method for defining associations.
     * This method is not a part of Sequelize lifecycle.
     * The `models/index` file will call this method automatically.
     */
    static associate(models) {
      // define association here
    }
  }
  Post.init(
    {
      title: DataTypes.STRING,
      body: DataTypes.STRING,
    },
    {
      sequelize,
      modelName: "Post",
    }
  );
  return Post;
};

マイグレーション

/usr/src/app#
npx sequelize-cli db:migrate
/usr/src/app#
> Sequelize CLI [Node: 14.15.4, CLI: 6.2.0, ORM: 6.4.0]

> Loaded configuration file "config/config.json".
> Using environment "development".
> == 20210123053140-create-post: migrating =======
> == 20210123053140-create-post: migrated (0.022s)

migratedとなればOK。

Expressからdbをさわってみる

Create

server.js
const express = require("express");
const app = express();

+ const models = require("./models/index");

app.get("/", (req, res) => {
  res.send("Hello World!");
});

+ // createして/へリダイレクトする
+ app.get("/create", (req, res) => {
+   await models.Post.create({
+     title: "sample title",
+     body: "sample body",
+   });
+   res.redirect("/");
+ });

app.listen(9000, () => {
  console.log("The app listening on port 5000");
});

modelsをrequireするとき、./models/だと失敗するので注意。

アクセス

Chrome
localhost:5000/create

pgAdminで確認

Servers/postgres/Databases/development/Schemas/public/Tables/の中の先ほど生成したモデル名のテーブルを右クリックし、View/Edit Data->All Rows

Screen Shot 2021-01-23 at 14.56.26.png

Data OutputタブでデータがCreateされているのが確認できる。

Read

server.js
const express = require("express");
const app = express();

const models = require("./models/index");

// 全て取得して返す
app.get("/", (req, res) => {
+   models.Post.findAll().then((posts) => {
+     res.send(posts);
+   });
-   //   res.send("Hello World!");
});

// createして/へリダイレクトする
app.get("/create", (req, res) => {
  models.Post.create({
    title: "sample title",
    body: "sample body",
  });
  res.redirect("/");
});

app.listen(9000, () => {
  console.log("The app listening on port 5000");
});

アクセス

Chrome
localhost:5000

Screen Shot 2021-01-23 at 15.00.58.png

無事に取得できているのが確認できた!

おしまい

あとはejsを入れたりしてviewを整形したり、bodyParserでFormデータを受け取ったりすればサービスとして本格的な開発が進められる。

今回のコード

https://github.com/nullworkbench/docker-express-postgresql-sequelize

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【PHP】Docker環境にphpMyadminを導入する

手順

docker-compose.ymlにphpMyadominのコンテナを追記します。

docker-compose.yml
#docker-compose.ymlのバージョン
version: "3.8"
#docker volumeの設定
volumes:
  docker-volume:

#services以下に各コンテナの設定を書く
services:
  #Webサーバーのコンテナ
  web:
    image: nginx:1.18
    ports:
      - "8000:80"
    depends_on:
      - app
    volumes:
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
      - .:/var/www/html
  #アプリケーションのコンテナ
  app:
    build: ./docker/php
    volumes:
      - .:/var/www/html
  #データベースのコンテナ
  db:
    image: mysql:5.7
    ports:
      - "3306:3306"
    environment:
      MYSQL_DATABASE: db_name
      MYSQL_USER: db_user
      MYSQL_PASSWORD: db_password
      MYSQL_ROOT_PASSWORD: root
      TZ: "Asia/Tokyo"
    volumes:
      - docker-volume:/var/lib/mysql
  # phpMyadominのコンテナ作成
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    depends_on:
      - db
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOSTS=db
      - PMA_USER=db_user
      - PMA_PASSWORD=db_password
    ports:
      - "8080:80"
    volumes:
      - ./docker/phpmyadmin/sessions:/sessions

コードの下部にある# phpMyadominのコンテナ作成からが追記する箇所です。
portsを8080に設定しているので、localhost:8080でphpmyadminの管理画面にアクセスできるように設定しています。
また、volumesにある./docker/phpmyadmin/sessions:/sessionsではセッション情報をボリュームに設定して永続化するようにします。

補足

参考までに作ってみた環境

https://github.com/yuyaamano23/Laravel_Docker_practice/tree/github-open




ちなみに僕は以下の記事を参考にphp+mysql+nginxの環境を構築しました。神記事です。:relaxed:
絶対に失敗しないDockerでLaravel+Vueの実行環境(LEMP環境)を構築する方法〜前編〜
絶対に失敗しないDockerでLaravel6.8+Vueの実行環境(LEMP環境)を構築する方法〜後編〜
Docker Composeでphpmyadminを導入する

各々構築したDocker環境のプロジェクトにあるdocker-compose.ymlnに追記していただければ良いと思います。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

sameersbn/redmineでpluginがうまくインストールできない時のtips

dockerでサクッとredmineを用意したい時、公式のイメージ以外で有名なsameersbn/redmine というイメージがあります。
このイメージ、plugins配下にpluginのディレクトリを作成して起動すると、Installも済ましてよきにはからってくれるのですが、一部パッケージがうまくいきません。
sammersbn/redmineのレポジトリに解決策があったので、記録のため、こちらに記載します。

参照元

以下のIssueを参考にしました。
https://github.com/sameersbn/docker-redmine/issues/267

どうするか

plugins\post-install.sh を用意して起動しましょう。

post-install.sh
bundle exec rake redmine:plugins:migrate RAILS_ENV=production

こちらを記載すると、コンテナの実行時に記載しているコマンドが実行され、うまいことやってくれます。
Issueではeasy guntのインストールでやり取りされていましたが、今回の対応で、国内で有名なview customize plugin や、かんばんを使えるようにする Agile なんかが簡単に使えるようになります。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

AL2にdocker-composeをインストールする

Dockerのインストール

sudo yum install -y docker
sudo systemctl start docker
sudo usermod -a -G docker ec2-user
sudo systemctl enable docker

docker-composeのインストール

https://docs.docker.com/compose/install/

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Docker × Laravel8 Jetstream】 *エラー* 

*目的
Docker × Laravel8 の環境でJetstreamでユーザー管理機能を作成しようとした時にエラーが出たので、どのような対策をとったのか忘却録にまとめています。同じエラーの出ている方の参考になれば幸いです。

1) メモリが足りないというエラー

root@4f02df05a7b0:/work# composer require laravel/jetstream

Using version ^2.1 for laravel/jetstream
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)

[22-Jan-2021 21:24:37 Asia/Tokyo] PHP Fatal error:  Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52

Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52

Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors.

やったこと) 容量を増やすために追記

参考: https://qiita.com/ucan-lab/items/af39b71c6eb304ddf696

php.ini
// コマンドで操作できるそうですが、私は直接書き込みました。
memory_limit = 256M

memory_limit = -1

** ↑ファイルに修正書き加えた時dockerbuildし直してます

docker-compose down
docker-compose up -d --build

2) 容量は増やしたが、Composer で jetstream をインストールできない

root@e0c9300fc452:/work# composer require laravel/jetstream
Using version ^2.1 for laravel/jetstream
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)

Installation failed, reverting ./composer.json to its original content.


  [Composer\Downloader\TransportException]                                                                                  
  The "https://packagist.org/p/symfony/polyfill-iconv%24eefa799e6ec8b425e65a6cb02164af323385692efc2847688bc204cb09260b33.j  
  son" file could not be downloaded (HTTP/1.1 404 Not Found)                                                                


require [--dev] [--prefer-source] [--prefer-dist] [--fixed] [--no-progress] [--no-suggest] [--no-update] [--no-scripts] [--update-no-dev] [--update-with-dependencies] [--update-with-all-dependencies] [--ignore-platform-reqs] [--prefer-stable] [--prefer-lowest] [--sort-packages] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--apcu-autoloader] [--] [<packages>]...

やったこと①)composer diagでチェック(どこが悪いか診断するコマンド)

下記のFAILが出ている。
Checking pubkeys: FAIL

root@e0c9300fc452:/work# composer diag
Checking composer.json: OK
Checking platform settings: OK
Checking git settings: OK
Checking http connectivity to packagist: OK
Checking https connectivity to packagist: OK
Checking github.com rate limit: OK
Checking disk free space: OK
Checking pubkeys: FAIL   *** ここでFAILが出ている ***
Missing pubkey for tags verification
Missing pubkey for dev verification
Run composer self-update --update-keys to set them up
Checking composer version: You are not running the latest stable version, run `composer self-update` to update (1.10.19 => 2.0.8)
Composer version: 1.10.19
PHP version: 7.4.14
PHP binary path: /usr/local/bin/php
OpenSSL version: OpenSSL 1.1.1d  10 Sep 2019

やったこと②) キー(pubkey)の設定し直しを行う。

# composer self-update --update-keys to set them up

参考記事
https://qiita.com/aberyotaro/items/782fd6ccc053e50f2e78
https://teratail.com/questions/188872

root@6c3992698050:/work# composer self-update --update-keys to set them up


  [Symfony\Component\Console\Exception\RuntimeException]       
  Too many arguments, expected arguments "command" "version".  


self-update [-r|--rollback] [--clean-backups] [--no-progress] [--update-keys] [--stable] [--preview] [--snapshot] [--1] [--2] [--set-channel-only] [--] [<version>]
// このコマンドではkeyの設定し直しができない!!
# composer self-update --update-keys to set them up

3) 上記の通り、Too many arguments のエラーが出る。

やったこと) keyの設定を変更するコマンドを変えて再度実行

# composer self-update --update-keys

kyeを入力するための扉が開いた!!

root@6c3992698050:/work# composer self-update --update-keys 

Open https://composer.github.io/pubkeys.html to find the latest keys
Enter Dev / Snapshot Public Key (including lines with -----):

↑↑↑ pubkeyの入力プロンプトがでたので、下記の2つのkeyを入力。

入力内容はこのサイト=> https://composer.github.io/pubkeys.html
怪しそうだけど...
● Dev / Snapshot Public Key
● Tags Public Key

 ** 解決 **

MBP:docker-laravel-handson airidoi$ docker-compose exec app bash
root@6a18b1a6d2ff:/work# composer require laravel/jetstream


Using version ^2.1 for laravel/jetstream
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 9 installs, 0 updates, 0 removals
  - Installing paragonie/constant_time_encoding (v2.4.0): Downloading (100%)         
  - Installing pragmarx/google2fa (8.0.0): Downloading (100%)         
  - Installing dasprid/enum (1.0.3): Downloading (100%)         
  - Installing bacon/bacon-qr-code (2.0.3): Downloading (100%)         
  - Installing laravel/fortify (v1.7.5): Downloading (100%)         
  - Installing jaybizzle/crawler-detect (v1.2.103): Downloading (100%)         
  - Installing mobiledetect/mobiledetectlib (2.8.34): Downloading (100%)         
  - Installing jenssegers/agent (v2.6.4): Downloading (100%)         
  - Installing laravel/jetstream (v2.1.1): Downloading (100%)         
bacon/bacon-qr-code suggests installing ext-imagick (to generate QR code images)
Writing lock file
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: facade/ignition
Discovered Package: fideloper/proxy
Discovered Package: fruitcake/laravel-cors
Discovered Package: jenssegers/agent
Discovered Package: laravel/fortify
Discovered Package: laravel/jetstream
Discovered Package: laravel/sail
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Package manifest generated successfully.
74 packages you are using are looking for funding.
Use the `composer fund` command to find out more!

嬉しい! でもまた今日も夜更かししてしまった...こうやって生活リズムが崩れるんです。

 最後に1点疑問

このコマンド実行のあと、15分くらい結果が出るにのかかります。
かかりすぎでは? 何かおかしいのかなと思っているのですが、どうでしょうか。
もしご存知の方いらっしゃったらコメント欄にご記入いただけますととてもとても嬉しいです!

composer require laravel/jetstream
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Docker × Laravel8 Jetstream】 *エラー*インストールの際のエラー

*目的
Docker × Laravel8 の環境でJetstreamをインストール時にエラーが発生。どのような対策をとったのか忘却録にまとめています。同じエラーの出ている方の参考になれば幸いです。

1) メモリが足りないというエラー

root@4f02df05a7b0:/work# composer require laravel/jetstream

Using version ^2.1 for laravel/jetstream
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)

[22-Jan-2021 21:24:37 Asia/Tokyo] PHP Fatal error:  Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52

Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52

Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors.

やったこと) 容量を増やすために追記

参考: https://qiita.com/ucan-lab/items/af39b71c6eb304ddf696

php.ini
// コマンドで操作できるそうですが、私は直接書き込みました。
memory_limit = 256M

memory_limit = -1

** ↑ファイルに修正書き加えた時dockerbuildし直してます

docker-compose down
docker-compose up -d --build

2) 容量は増やしたが、Composer で jetstream をインストールできない

root@e0c9300fc452:/work# composer require laravel/jetstream
Using version ^2.1 for laravel/jetstream
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)

Installation failed, reverting ./composer.json to its original content.


  [Composer\Downloader\TransportException]                                                                                  
  The "https://packagist.org/p/symfony/polyfill-iconv%24eefa799e6ec8b425e65a6cb02164af323385692efc2847688bc204cb09260b33.j  
  son" file could not be downloaded (HTTP/1.1 404 Not Found)                                                                


require [--dev] [--prefer-source] [--prefer-dist] [--fixed] [--no-progress] [--no-suggest] [--no-update] [--no-scripts] [--update-no-dev] [--update-with-dependencies] [--update-with-all-dependencies] [--ignore-platform-reqs] [--prefer-stable] [--prefer-lowest] [--sort-packages] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--apcu-autoloader] [--] [<packages>]...

やったこと①)composer diagでチェック(どこが悪いか診断するコマンド)

下記のFAILが出ている。
Checking pubkeys: FAIL

root@e0c9300fc452:/work# composer diag
Checking composer.json: OK
Checking platform settings: OK
Checking git settings: OK
Checking http connectivity to packagist: OK
Checking https connectivity to packagist: OK
Checking github.com rate limit: OK
Checking disk free space: OK
Checking pubkeys: FAIL   *** ここでFAILが出ている ***
Missing pubkey for tags verification
Missing pubkey for dev verification
Run composer self-update --update-keys to set them up
Checking composer version: You are not running the latest stable version, run `composer self-update` to update (1.10.19 => 2.0.8)
Composer version: 1.10.19
PHP version: 7.4.14
PHP binary path: /usr/local/bin/php
OpenSSL version: OpenSSL 1.1.1d  10 Sep 2019

やったこと②) キー(pubkey)の設定し直しを行う。

# composer self-update --update-keys to set them up

参考記事
https://qiita.com/aberyotaro/items/782fd6ccc053e50f2e78
https://teratail.com/questions/188872

root@6c3992698050:/work# composer self-update --update-keys to set them up


  [Symfony\Component\Console\Exception\RuntimeException]       
  Too many arguments, expected arguments "command" "version".  


self-update [-r|--rollback] [--clean-backups] [--no-progress] [--update-keys] [--stable] [--preview] [--snapshot] [--1] [--2] [--set-channel-only] [--] [<version>]
// このコマンドではkeyの設定し直しができない!!
# composer self-update --update-keys to set them up

3) 上記の通り、Too many arguments のエラーが出る。

やったこと) keyの設定を変更するコマンドを変えて再度実行

# composer self-update --update-keys

kyeを入力するための扉が開いた!!

root@6c3992698050:/work# composer self-update --update-keys 

Open https://composer.github.io/pubkeys.html to find the latest keys
Enter Dev / Snapshot Public Key (including lines with -----):

↑↑↑ pubkeyの入力プロンプトがでたので、下記の2つのkeyを入力。

入力内容はこのサイト=> https://composer.github.io/pubkeys.html
怪しそうだけど...
● Dev / Snapshot Public Key
● Tags Public Key

 ** 解決 **

MBP:docker-laravel-handson airidoi$ docker-compose exec app bash
root@6a18b1a6d2ff:/work# composer require laravel/jetstream


Using version ^2.1 for laravel/jetstream
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 9 installs, 0 updates, 0 removals
  - Installing paragonie/constant_time_encoding (v2.4.0): Downloading (100%)         
  - Installing pragmarx/google2fa (8.0.0): Downloading (100%)         
  - Installing dasprid/enum (1.0.3): Downloading (100%)         
  - Installing bacon/bacon-qr-code (2.0.3): Downloading (100%)         
  - Installing laravel/fortify (v1.7.5): Downloading (100%)         
  - Installing jaybizzle/crawler-detect (v1.2.103): Downloading (100%)         
  - Installing mobiledetect/mobiledetectlib (2.8.34): Downloading (100%)         
  - Installing jenssegers/agent (v2.6.4): Downloading (100%)         
  - Installing laravel/jetstream (v2.1.1): Downloading (100%)         
bacon/bacon-qr-code suggests installing ext-imagick (to generate QR code images)
Writing lock file
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: facade/ignition
Discovered Package: fideloper/proxy
Discovered Package: fruitcake/laravel-cors
Discovered Package: jenssegers/agent
Discovered Package: laravel/fortify
Discovered Package: laravel/jetstream
Discovered Package: laravel/sail
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Package manifest generated successfully.
74 packages you are using are looking for funding.
Use the `composer fund` command to find out more!

嬉しい! でもまた今日も夜更かししてしまった...こうやって生活リズムが崩れるんです。

 最後に1点疑問

このコマンド実行のあと、15分くらい結果が出るにのかかります。
かかりすぎでは? 何かおかしいのかなと思っているのですが、どうでしょうか。
もしご存知の方いらっしゃったらコメント欄にご記入いただけますととてもとても嬉しいです!

composer require laravel/jetstream
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Docker × Laravel8 Jetstream】 *エラー*Jetstreamインストール時のエラー

*目的
Docker × Laravel8 の環境でJetstreamをインストール時にエラーが発生。どのような対策をとったのか忘却録にまとめています。同じエラーの出ている方の参考になれば幸いです。

1) メモリが足りないというエラー

root@4f02df05a7b0:/work# composer require laravel/jetstream

Using version ^2.1 for laravel/jetstream
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)

[22-Jan-2021 21:24:37 Asia/Tokyo] PHP Fatal error:  Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52

Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52

Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors.

やったこと) 容量を増やすために追記

参考: https://qiita.com/ucan-lab/items/af39b71c6eb304ddf696

php.ini
// コマンドで操作できるそうですが、私は直接書き込みました。
memory_limit = 256M

memory_limit = -1

** ↑ファイルに修正書き加えた時dockerbuildし直してます

docker-compose down
docker-compose up -d --build

2) 容量は増やしたが、Composer で jetstream をインストールできない

root@e0c9300fc452:/work# composer require laravel/jetstream
Using version ^2.1 for laravel/jetstream
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)

Installation failed, reverting ./composer.json to its original content.


  [Composer\Downloader\TransportException]                                                                                  
  The "https://packagist.org/p/symfony/polyfill-iconv%24eefa799e6ec8b425e65a6cb02164af323385692efc2847688bc204cb09260b33.j  
  son" file could not be downloaded (HTTP/1.1 404 Not Found)                                                                


require [--dev] [--prefer-source] [--prefer-dist] [--fixed] [--no-progress] [--no-suggest] [--no-update] [--no-scripts] [--update-no-dev] [--update-with-dependencies] [--update-with-all-dependencies] [--ignore-platform-reqs] [--prefer-stable] [--prefer-lowest] [--sort-packages] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--apcu-autoloader] [--] [<packages>]...

やったこと①)composer diagでチェック(どこが悪いか診断するコマンド)

下記のFAILが出ている。
Checking pubkeys: FAIL

root@e0c9300fc452:/work# composer diag
Checking composer.json: OK
Checking platform settings: OK
Checking git settings: OK
Checking http connectivity to packagist: OK
Checking https connectivity to packagist: OK
Checking github.com rate limit: OK
Checking disk free space: OK
Checking pubkeys: FAIL   *** ここでFAILが出ている ***
Missing pubkey for tags verification
Missing pubkey for dev verification
Run composer self-update --update-keys to set them up
Checking composer version: You are not running the latest stable version, run `composer self-update` to update (1.10.19 => 2.0.8)
Composer version: 1.10.19
PHP version: 7.4.14
PHP binary path: /usr/local/bin/php
OpenSSL version: OpenSSL 1.1.1d  10 Sep 2019

やったこと②) キー(pubkey)の設定し直しを行う。

# composer self-update --update-keys to set them up

参考記事
https://qiita.com/aberyotaro/items/782fd6ccc053e50f2e78
https://teratail.com/questions/188872

root@6c3992698050:/work# composer self-update --update-keys to set them up


  [Symfony\Component\Console\Exception\RuntimeException]       
  Too many arguments, expected arguments "command" "version".  


self-update [-r|--rollback] [--clean-backups] [--no-progress] [--update-keys] [--stable] [--preview] [--snapshot] [--1] [--2] [--set-channel-only] [--] [<version>]
// このコマンドではkeyの設定し直しができない!!
# composer self-update --update-keys to set them up

3) 上記の通り、Too many arguments のエラーが出る。

やったこと) keyの設定を変更するコマンドを変えて再度実行

# composer self-update --update-keys

kyeを入力するための扉が開いた!!

root@6c3992698050:/work# composer self-update --update-keys 

Open https://composer.github.io/pubkeys.html to find the latest keys
Enter Dev / Snapshot Public Key (including lines with -----):

↑↑↑ pubkeyの入力プロンプトがでたので、下記の2つのkeyを入力。

入力内容はこのサイト=> https://composer.github.io/pubkeys.html
怪しそうだけど...
● Dev / Snapshot Public Key
● Tags Public Key

 ** 解決 **

MBP:docker-laravel-handson airidoi$ docker-compose exec app bash
root@6a18b1a6d2ff:/work# composer require laravel/jetstream


Using version ^2.1 for laravel/jetstream
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 9 installs, 0 updates, 0 removals
  - Installing paragonie/constant_time_encoding (v2.4.0): Downloading (100%)         
  - Installing pragmarx/google2fa (8.0.0): Downloading (100%)         
  - Installing dasprid/enum (1.0.3): Downloading (100%)         
  - Installing bacon/bacon-qr-code (2.0.3): Downloading (100%)         
  - Installing laravel/fortify (v1.7.5): Downloading (100%)         
  - Installing jaybizzle/crawler-detect (v1.2.103): Downloading (100%)         
  - Installing mobiledetect/mobiledetectlib (2.8.34): Downloading (100%)         
  - Installing jenssegers/agent (v2.6.4): Downloading (100%)         
  - Installing laravel/jetstream (v2.1.1): Downloading (100%)         
bacon/bacon-qr-code suggests installing ext-imagick (to generate QR code images)
Writing lock file
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: facade/ignition
Discovered Package: fideloper/proxy
Discovered Package: fruitcake/laravel-cors
Discovered Package: jenssegers/agent
Discovered Package: laravel/fortify
Discovered Package: laravel/jetstream
Discovered Package: laravel/sail
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Package manifest generated successfully.
74 packages you are using are looking for funding.
Use the `composer fund` command to find out more!

嬉しい! でもまた今日も夜更かししてしまった...こうやって生活リズムが崩れるんです。

4) 最後に1点疑問

このコマンド実行のあと、15分くらい結果が出るにのかかります。
かかりすぎでは? 何かおかしいのかなと思っているのですが、どうでしょうか。
もしご存知の方いらっしゃったらコメント欄にご記入いただけますととてもとても嬉しいです!

composer require laravel/jetstream
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む