[Docker]在尝试使用Docker的过程中,顺便试用了Laradock,下面是我的经历
首先
突然想起,覺得很有趣,所以我試著安裝了Docker。
順便試了試Laradock。我一直做到實現標準的登入畫面。
因為我不想污染本地環境,所以我在虛擬機上安裝了Docker並在那裡運行容器。
环境
項目内容マシンVirtualBox + vagrant上にCentOS7.4を準備CentOSCentOS Linux release 7.4.1708 (Core)DockerDocker version 18.06.0-ce, build 0ffa825docker-composedocker-compose version 1.17.1, build 6d101fb
操作步驟
虚拟机的准备
mkdir docker-sample
cd docker-sample
vagrant box add centos/7
vagrant init centos/7
vim Vagrantfile
- # config.vm.network "private_network", ip: "192.168.33.10"
+ config.vm.network "private_network", ip: "192.168.33.10"
vagrant up
准备Docker
sudo su
# 必須パッケージインストール
yum install -y yum-utils device-mapper-persistent-data lvm2
# リポジトリ追加
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# yumパッケージインデックスの更新
yum makecache fast
# 最新版のインストール
yum install docker-ce
# サービス起動
systemctl start docker
# 念のためバージョンチェック
docker -v
# 自動起動
systemctl enable docker
# 毎回sudoしなくていいように権限を変更
groupadd docker
usermod -aG docker $USER
# 2018-08-13 追記:
gpasswd -a $USER docker
参考:在CentOS7上安装Docker
到此阶段,Docker已经可用。
由于我想为Laravel安装laradock容器,所以我将继续进行更多操作。
准备docker-compose
curl -L https://github.com/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > docker-compose
mv docker-compose /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
参考资料:在CentOS 7.3上安装Docker Compose
对于我而言,我需要在这里重新启动虚拟机一次。
vagrant halt
vagrant up --provision
# 念のためにバージョンチェック
docker-compose -v
克隆laradock
sudo yum install git
git clone https://github.com/LaraDock/laradock.git
cd laradock
# docker-conposeの環境ファイルを準備
cp env-example .env
# 立ち上げ
docker-compose up -d nginx mysql
# dockerイメージにvagrantとしてログインする
# NG :
# docker-compose exec workspace --user:vagrant bash
# OK :
docker-compose exec --user {uid} workspace bash
# 参考:uidの調べ方
whoami
# > vagrant
id vagrant
# > 1000
感谢您对webazarashi指出的意见!
创建和设置示例项目
# ワークスペース内にLaravelサンプルアプリを作成する
composer -V
composer create-project laravel/laravel sample
进行文档根目录的设置。
请注意,这次是编辑laradock的env文件,而不是Laravel的env文件。
cd laradock
vim .env
- APP_CODE_PATH_HOST=../
+ APP_CODE_PATH_HOST=../sample
# 一度コンテナを再起動する
docker-compose stop
docker-compose up -d nginx workspace mysql
给它一个尝试连接的机会
让我们从本地浏览器试着连接一下。
只要在浏览器中输入http://192.168.33.10,应该就能连接上了。
进行DB的配置
通常情况下,我希望在这里运行 “php artisan migrate”,但如果不更改数据库设置,它将无法成功执行。
-
- 【Docker】MySQL8.0系を使う時に発生する問題について
-
- LaradockでMySQLがどうしても立ち上がらない人あつまれー!
- MySQL8.0 認証方式を変更する
…将对话整合在一起,
-
- docker側のenvファイルとプロジェクト側のenvファイルをMySQLのコンテナに合わせる必要がある
- MySQL8.x系はユーザー認証方法が変わっており、設定を変更しないとmigrateできない
听起来是这样的。
顺便提一下,当我尝试下载MySQL容器版本的时候,遇到了错误,无法成功完成。
因此,这次我们将继续使用MySQL 8.x来进行构建。
我们会逐步进行相应的处理。
顺便一提:那个错误
Illuminate\Database\QueryException:数据库认证方法未知(SQL:select * from information_schema.tables where table_schema = blog and table_name = migrations)
docker-compose exec mysql bash
/* MySQLにログイン */
mysql -u root -p
/* ユーザーリスト取得 */
SELECT user, host, plugin FROM mysql.user;
/*
+------------------+-----------+-----------------------+
| user | host | plugin |
+------------------+-----------+-----------------------+
| default | % | caching_sha2_password | → mysql_native_password へ
| root | % | caching_sha2_password |
| mysql.infoschema | localhost | caching_sha2_password |
| mysql.session | localhost | caching_sha2_password |
| mysql.sys | localhost | caching_sha2_password |
| root | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+
*/
/* 認証方式の変更 */
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
ALTER USER 'root'@'*' IDENTIFIED WITH mysql_native_password BY 'root';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
/* 標準で使用するDBを作成する */
CREATE DATABASE sample_db;
SHOW databases;
exit
vim sample/.env
DB_CONNECTION=mysql
- DB_HOST=127.0.0.1
+ DB_HOST=mysql
DB_PORT=3306
- DB_DATABASE=homestead
+ DB_DATABASE=sample_db
- DB_USERNAME=homestead
+ DB_USERNAME=root
- DB_PASSWORD=secret
+ DB_PASSWORD=root
重新启动容器一次
docker-compose stop
docker-compose up -d nginx mysql workspace
执行迁移
docker-conpose exec workspace bash
php artisan make:auth
php artisan migrate
搞定了!暂时成功地完成了这个环境。