[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

搞定了!暂时成功地完成了这个环境。

广告
将在 10 秒后关闭
bannerAds