Dockerを使う必要があり、開発環境を構築しております。
ユーザー認証機能が必要で、Jetstreamをインストールしたいのですが、
$ npm install && npm run dev
と打つと
npm: command not found
というエラーが出てしまいます。Dockerfileの書き方や他、環境構築方法でアドバイスをいただけますと幸いです。
###構築内容
Laravel8系
php7.4
mysql
Apache
###フォルダ構成
プロジェクトフォルダ └docker └app └000-default.conf └Dockerfile └php.ini └db └data └my.cnf └src └Laravelのプロジェクト名以下Laravel └docker-compose.yml
###各種コード
■Dockerfile
# どんなdockerイメージを利用して構築をするか FROM php:7.4-apache # 設定ファイルをdockerコンテナ内のPHP、Apacheに読み込ませる ADD php.ini /usr/local/etc/php/ ADD 000-default.conf /etc/apache2/sites-enabled/ # Composerのインストール RUN cd /usr/bin && curl -s http://getcomposer.org/installer | php && ln -s /usr/bin/composer.phar /usr/bin/composer # ミドルウェアインストール RUN apt-get update \ && apt-get install -y \ git \ zip \ unzip \ vim \ libpng-dev \ libpq-dev \ && docker-php-ext-install pdo_mysql \ && curl -sL https://deb.nodesource.com/setup_12.x | bash - \ && apt-get install -y nodejs \ # Laravelで必要になるmodRewriteを有効化する RUN mv /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled RUN /bin/sh -c a2enmod rewrite
※以下のサイトを参考にしました。(DockerfileのNode.jsあたり)
Docker上のLaravelにJetstreamをインストールする。
■docker-compose.yml
# Compose fileのバージョン指定 version: '3' # どんなコンテナを立ち上げるか services: # laravelを動かすコンテナ app: # どのポートを開いて繋ぐか。下記はコンテナの80番ポートを開いて、ホストの8000番につなぐ ports: - "80:80" # 先ほど作ったDockerfileを使って、コンテナをビルドするという指定 build: ./docker/app # コンテナの名前を指定 container_name: altouch_app # コンテナとホスト側のディレクトリを同期する場所の指定。laravelのソースが入る予定の場所 volumes: - ./src/:/var/www/html # MySQLを動かすコンテナ db: # Docker HubからMySQL5.7の公式イメージをダウンロードしてくる指定 image: mysql:5.7 container_name: altouch_db # コンテナ内の環境変数を指定。環境変数を渡すとビルド時に設定してくれるDockerイメージがあるので、利用の際はDocker Hubのサイトで確認すると良い environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: ***[省略]*** MYSQL_USER: ***[省略]*** MYSQL_PASSWORD: ***[省略]*** TZ: 'Asia/Tokyo' # 起動時のコマンド command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci # ディレクトリ同期。設定ファイルとMySQLのデータが保存される場所を同期している。コンテナは基本的に起動時に変更されてもコンテナ自体が止まるとデータが消えてしまうため、保存しておきたいものはホストマシンと同期しておく必要がある。 volumes: - ./docker/db/data:/var/lib/mysql - ./docker/db/my.cnf:/etc/mysql/conf.d/my.cnf ports: - 3306:3306
nodejsインストールミスってるだけでは?
私もNode.jsのインストールができていないのかなと思いまして、、
Dockerfileの
&& curl -sL https://deb.nodesource.com/setup_12.x | bash - \
&& apt-get install -y nodejs
でインストールできていないのでしょうか・・・記述が誤っているのでしょうか・・
dockerfileの最下部に以下を追加してみたら?
RUN curl -sL https://deb.nodesource.com/setup_15.x | bash - \
&& apt-get update -y \
&& apt-get install -y nodejs \
&& apt autoremove -y
ちなみに自分ならnodeをphpコンテナにインストールするのではなくnpm用のコンテナ別で用意します
ありがとうございます。いただいたものをDockerfileの最下部に追加し、
docker-compose build
docker-compose up
まで進めました!!。しかし、その後、
・docker exec -it [コンテナ名] bash でプロジェクトのコンテナ内に入る
・root@c7a256e6f42e:/var/www/html# cd [フォルダ名] (フォルダ移動)
・root@c7a256e6f42e:/var/www/html/[フォルダ名]# npm install && npm run dev
で以下のエラーが出てしまいます…
『bash: npm: command not found』
…npm install && npm run devは、コンテナ内に入って実行するのですよね?
何度もすみません…
npm用のコンテナを別に用意した方がうまく行くのでしたらそちらも試してみようと思いました…
回答2件
あなたの回答
tips
プレビュー