https://qiita.com/rope19181/items/10da72374839630af83b
こちらをリスペクトして、開発環境を構築していきます。
ほぼ、そのままで行けましたが、エラーが一部発生したので以下に記載します。
project
├ docker
│ ├ db
│ │ ├ data
│ │ ├ my.conf
│ │ └ sql
│ │
│ ├ nginx
│ │ └ default.conf
│ │
│ └ php
│ ├ Dockerfile
│ └ php.ini
├ myapp
└ docker-compose.yml
docker-compos up -d –buildで、以下のエラーが発生しました。
Dockerfile内で、まず、php7.2-fpm => php7.4-fpmに変更したためのエラーのようです。
configure: error: Package requirements (libzip >= 0.11) were not met:
No package 'libzip' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables LIBZIP_CFLAGS
and LIBZIP_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
ERROR: Service 'php' failed to build: The command '/bin/sh -c apt-get update && apt-get install -y zlib1g-dev mariadb-client && docker-php-ext-install zip pdo_mysql' returned a non-zero code: 1
Dockerfileの以下の行を修正します。
&& apt-get install -y zlib1g-dev mariadb-client \
↓
&& apt-get install -y libzip-dev mariadb-client \
再度、buildをします。
以下のエラーが発生しました。
Could not open input file: composer-setup.php
ERROR: Service 'php' failed to build: The command '/bin/sh -c php composer-setup.php' returned a non-zero code: 1
ぐぐるとすぐに出てきたので、以下の対応を追加
composerのページに行き、そこにある以下の赤枠部分をコピーして
Dockerfileの同様の部分に貼付け、各行の頭に、”RUN”を追加する。
(よく読むと、本家のサイトに、コピペすることと書いてありました。)
こちらは、ハッシュ値が変わったことによるエラーのようでした。(最新版を反映する)
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
RUN php -r "if (hash_file('sha384', 'composer-setup.php') === 'e5325b19b381bfd88ce90a5ddb7823406b2a38cff6bb704b0acc289a09c8128d4a8ce2b\
bafcd1fcbdc38666422fe2806') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_E\
OL;"
RUN php composer-setup.php
RUN php -r "unlink('composer-setup.php');"
上記の修正して、buildを行い、エラーがでずに完了することを確認します。
docker-compose up -d --build
Laravelプロジェクトの作成
phpコンテナに入ります。
docker-compose exec php bash
新規プロジェクトを作成(Laravel6を入れます)
pwd
/var/www/ #/var/www/で以下のコマンドを実行
composer create-project --prefer-dist laravel/laravel=6.* .
Laravelプロジェクトの環境設定
laravelプロジェクト内の.envやconfig/detabase.phpのデータベースの設定docker-compose.ymlに設定した値に変更します。
(編集は、Docker内ではなくローカル環境で行います。)
myapp/.env, myapp/config/database.phpを編集します。
# docker-compose.ymlの設定
db:
image: mysql:5.7
container_name: db-host
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: database
MYSQL_USER: docker
MYSQL_PASSWORD: docker
TZ: 'Asia/Tokyo'
#.envファイル
[Before]
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
[After]
DB_CONNECTION=mysql
DB_HOST=db-host
DB_PORT=3306
DB_DATABASE=database
DB_USERNAME=docker
DB_PASSWORD=docker
#config/database.php
[Before]
'host' => env('DB_HOST', '127.0.0.1'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
[After]
'host' => env('DB_HOST', 'db-host'),
'database' => env('DB_DATABASE', 'database'),
'username' => env('DB_USERNAME', 'docker'),
'password' => env('DB_PASSWORD', 'docker'),
表示確認
以下に、アクセスし、トップページが表示されることを確認。
migrateとphpMyAdminの表示確認
phpコンテナに入り、migrateを実行します。
php artisan migrate
phpMyAdmin
databaseデータベースに、4つのテーブルができていればOKです。
ここまでで、開発環境の構築は完了です。
今後は、作成しようとしているサイトの構築を進めていきます。