在 macOS 下用 Docker 配置 Lumen 开发环境

Lumen

就在两三天前(开始写这个文章是 9 月 8 号,确实是 2,3 天前,然而写完的时候已经是 9 月 25 号了,😂 ),Lumen 发布了 5.5 版本。傻乎乎的我就在第一时间把现有运行着 Lumen 5.4 的系统都升级到了 5.5 版本。因为很多东西变化了,升级过程中出现了不少的坑,尤其是第三方的库对于新系统的支持还非常的不好。

不过今天主要想要讨论的不是如何将 Lumen 从 5.4 升级到 5.5,而是介绍如何搭建 Lumen 开发环境。

之前 Madison 同学一直苦恼于如何在 macOS 下搭建基于 PHP 的 Lumen 开发环境,我就随手把配置文件给他了,也没有时间好好解释一下为什么。

正好借着这次系统升级的机会,写篇文章简单介绍下,也算是给 Madison 同学一个交代了。

准备工作

安装 Docker

作为一个使用 macOS 的工程师,Homebrew 是必不可少的,没有的话自己安装吧。

首先安装 Docker 相关的程序

brew update
brew install docker docker-machine docker-compose

如果你没有安装过 VirtualBox 的话,你还需要先安装一个

brew cask install virtualbox

接着创建一个 Docker 虚拟机,名字用 default 就好,当然你也可以改成你喜欢的名字

docker-machine create default

接着就是要下载需要的 Docker 镜像了

docker pull tommylau/php:7.1
docker pull nginx:1.12-alpine
docker pull mysql:5.7

分别对应我们需要的 MySQLPHPNginx,到这里 Docker 的准备工作就算是完成了。

获取 Lumen 程序

Lumen 官方的建议是使用命令行的方式来安装,因为我在写这篇文章的时候,官方的 Lumen 还停留在 5.4 的版本,没有 5.5 的版本,所以我就直接下载了。

https://github.com/laravel/lumen/archive/v5.5.0.tar.gz

tar zxvf lumen-5.5.0.tar.gz

解压缩到任意目录,然后进入该目录,Lumen 的准备工作就算是完成了。

Nginx 配置文件

在 Lumen 目录里面创建一个名为 default.conf 的 Nginx 配置文件,内容如下:

server {
    listen       80;
    server_name  localhost;

    root /var/www/public;
    index index.html index.htm index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $request_filename;
        include        fastcgi_params;
    }
}

配置 Docker compose 文件

创建一个名为 docker-compose.yml 的文件,用于配置 MySQLPHPNginx 服务,同时还会创建一个用于数据库的存储空间。

version: '3'

services:
  mysql:
    image: mysql:5.7
    volumes:
      - data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: Passw0rd
      MYSQL_DATABASE: lumen
      MYSQL_USER: lumen
      MYSQL_PASSWORD: lumen

  php:
    depends_on:
      - mysql
    image: tommylau/php:7.1
    volumes:
      - $PWD:/var/www
    restart: always

  nginx:
    depends_on:
      - php
    image: nginx:1.12-alpine
    ports:
      - 80:80
      - 443:443
    volumes:
      - $PWD:/var/www
      - $PWD/default.conf:/etc/nginx/conf.d/default.conf

volumes:
  data

其中 MySQL 的用户名、密码还有数据库的名字都是:lumen,数据库的文件存储名为:data

配置 Lumen 的数据库

首先先复制一份预配置的文件,并命名为 .env,这个文件务必要在 Lumen 的根目录。

cp .env.example .env

然后修改 .env 文件的内容如下:

APP_ENV=local
APP_DEBUG=true
APP_KEY=
APP_TIMEZONE=UTC

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=lumen
DB_USERNAME=lumen
DB_PASSWORD=lumen

CACHE_DRIVER=array
QUEUE_DRIVER=array

运行 Docker compose

我们只需要一条简单的命令,便可以将几个服务跑起来了。

$ docker-compose up -d
Creating network "lumen550_default" with the default driver
Creating volume "lumen550_data" with default driver
Pulling mysql (mysql:5.7)...
5.7: Pulling from library/mysql
ad74af05f5a2: Pull complete
0639788facc8: Pull complete
de70fa77eb2b: Pull complete
724179e94999: Pull complete
50c77fb16ba6: Pull complete
d51f459239fb: Pull complete
937bbdd4305a: Pull complete
35369f9634e1: Pull complete
f6016aab25f1: Pull complete
5f1901e920da: Pull complete
fdf808213c5b: Pull complete
Digest: sha256:96edf37370df96d2a4ee1715cc5c7820a0ec6286551a927981ed50f0273d9b43
Status: Downloaded newer image for mysql:5.7
Pulling php (tommylau/php:7.1)...
7.1: Pulling from tommylau/php
90f4dba627d6: Pull complete
19ae35d04742: Pull complete
6d34c9ec1436: Pull complete
729ea35b870d: Pull complete
d9a9bce03ae5: Pull complete
14722aee56a9: Pull complete
cddf82133cfb: Pull complete
f947a5248e64: Pull complete
df8066eb849b: Pull complete
f1c3a7903b82: Pull complete
f79a49b80174: Pull complete
9b1090fd4e6a: Pull complete
Digest: sha256:08c2f4a744cc1691a91b38e3dc8b59c494c68e3b2e80a8533d170949d5eb5fce
Status: Downloaded newer image for tommylau/php:7.1
Pulling nginx (nginx:1.12-alpine)...
1.12-alpine: Pulling from library/nginx
019300c8a437: Pull complete
6699c6d12419: Pull complete
49502b430ca1: Pull complete
9bb3a196cbc6: Pull complete
Digest: sha256:d4656aba193a5e0df453a7e6eea3e339c2137097beb1ed06b8d76528edfc0a8a
Status: Downloaded newer image for nginx:1.12-alpine
Creating lumen550_mysql_1 ...
Creating lumen550_mysql_1 ... done
Creating lumen550_php_1 ...
Creating lumen550_php_1 ... done
Creating lumen550_nginx_1 ...
Creating lumen550_nginx_1 ... done
Attaching to lumen550_mysql_1, lumen550_php_1, lumen550_nginx_1
mysql_1  | Initializing database
mysql_1  | 2017-09-08T03:31:18.235209Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
mysql_1  | 2017-09-08T03:31:18.495735Z 0 [Warning] InnoDB: New log files created, LSN=45790
mysql_1  | 2017-09-08T03:31:18.533504Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
mysql_1  | 2017-09-08T03:31:18.593576Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 2d40d947-9446-11e7-9d10-0242ac120002.
mysql_1  | 2017-09-08T03:31:18.594961Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
mysql_1  | 2017-09-08T03:31:18.595220Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
mysql_1  | 2017-09-08T03:31:18.974914Z 1 [Warning] 'user' entry 'root@localhost' ignored in --skip-name-resolve mode.
mysql_1  | 2017-09-08T03:31:18.975846Z 1 [Warning] 'user' entry 'mysql.session@localhost' ignored in --skip-name-resolve mode.
mysql_1  | 2017-09-08T03:31:18.975888Z 1 [Warning] 'user' entry 'mysql.sys@localhost' ignored in --skip-name-resolve mode.
mysql_1  | 2017-09-08T03:31:18.977453Z 1 [Warning] 'db' entry 'performance_schema mysql.session@localhost' ignored in --skip-name-resolve mode.
mysql_1  | 2017-09-08T03:31:18.977474Z 1 [Warning] 'db' entry 'sys mysql.sys@localhost' ignored in --skip-name-resolve mode.
mysql_1  | 2017-09-08T03:31:18.977500Z 1 [Warning] 'proxies_priv' entry '@ root@localhost' ignored in --skip-name-resolve mode.
mysql_1  | 2017-09-08T03:31:18.977543Z 1 [Warning] 'tables_priv' entry 'user mysql.session@localhost' ignored in --skip-name-resolve mode.
mysql_1  | 2017-09-08T03:31:18.977559Z 1 [Warning] 'tables_priv' entry 'sys_config mysql.sys@localhost' ignored in --skip-name-resolve mode.
mysql_1  | Database initialized
mysql_1  | Initializing certificates
mysql_1  | Generating a 2048 bit RSA private key
mysql_1  | ..................+++
mysql_1  | ..............................................................................+++
mysql_1  | unable to write 'random state'
mysql_1  | writing new private key to 'ca-key.pem'
mysql_1  | -----
mysql_1  | Generating a 2048 bit RSA private key
mysql_1  | ............................+++
mysql_1  | ...........................+++
mysql_1  | unable to write 'random state'
mysql_1  | writing new private key to 'server-key.pem'
mysql_1  | -----
mysql_1  | Generating a 2048 bit RSA private key
mysql_1  | ...........+++
mysql_1  | .......................................................................................+++
mysql_1  | unable to write 'random state'
mysql_1  | writing new private key to 'client-key.pem'
mysql_1  | -----
mysql_1  | Certificates initialized
mysql_1  | MySQL init process in progress...
mysql_1  | 2017-09-08T03:31:21.203861Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
mysql_1  | 2017-09-08T03:31:21.204753Z 0 [Note] mysqld (mysqld 5.7.19) starting as process 87 ...
mysql_1  | 2017-09-08T03:31:21.207345Z 0 [Note] InnoDB: PUNCH HOLE support available
mysql_1  | 2017-09-08T03:31:21.207429Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
mysql_1  | 2017-09-08T03:31:21.207443Z 0 [Note] InnoDB: Uses event mutexes
mysql_1  | 2017-09-08T03:31:21.207456Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
mysql_1  | 2017-09-08T03:31:21.207465Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.3
mysql_1  | 2017-09-08T03:31:21.207474Z 0 [Note] InnoDB: Using Linux native AIO
mysql_1  | 2017-09-08T03:31:21.207635Z 0 [Note] InnoDB: Number of pools: 1
mysql_1  | 2017-09-08T03:31:21.207707Z 0 [Note] InnoDB: Using CPU crc32 instructions
mysql_1  | 2017-09-08T03:31:21.208790Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
mysql_1  | 2017-09-08T03:31:21.214422Z 0 [Note] InnoDB: Completed initialization of buffer pool
mysql_1  | 2017-09-08T03:31:21.217735Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
mysql_1  | 2017-09-08T03:31:21.229522Z 0 [Note] InnoDB: Highest supported file format is Barracuda.
mysql_1  | 2017-09-08T03:31:21.236377Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables
mysql_1  | 2017-09-08T03:31:21.236517Z 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
mysql_1  | 2017-09-08T03:31:21.253899Z 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
mysql_1  | 2017-09-08T03:31:21.255052Z 0 [Note] InnoDB: 96 redo rollback segment(s) found. 96 redo rollback segment(s) are active.
mysql_1  | 2017-09-08T03:31:21.255095Z 0 [Note] InnoDB: 32 non-redo rollback segment(s) are active.
mysql_1  | 2017-09-08T03:31:21.255560Z 0 [Note] InnoDB: Waiting for purge to start
mysql_1  | 2017-09-08T03:31:21.305698Z 0 [Note] InnoDB: 5.7.19 started; log sequence number 2539315
mysql_1  | 2017-09-08T03:31:21.306978Z 0 [Note] Plugin 'FEDERATED' is disabled.
mysql_1  | 2017-09-08T03:31:21.310284Z 0 [Note] Found ca.pem, server-cert.pem and server-key.pem in data directory. Trying to enable SSL support using them.
mysql_1  | 2017-09-08T03:31:21.310489Z 0 [Warning] CA certificate ca.pem is self signed.
mysql_1  | 2017-09-08T03:31:21.310681Z 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
mysql_1  | 2017-09-08T03:31:21.312210Z 0 [Note] InnoDB: Buffer pool(s) load completed at 170908  3:31:21
mysql_1  | 2017-09-08T03:31:21.318300Z 0 [Warning] 'user' entry 'root@localhost' ignored in --skip-name-resolve mode.
mysql_1  | 2017-09-08T03:31:21.318379Z 0 [Warning] 'user' entry 'mysql.session@localhost' ignored in --skip-name-resolve mode.
mysql_1  | 2017-09-08T03:31:21.318405Z 0 [Warning] 'user' entry 'mysql.sys@localhost' ignored in --skip-name-resolve mode.
mysql_1  | 2017-09-08T03:31:21.318431Z 0 [Warning] 'db' entry 'performance_schema mysql.session@localhost' ignored in --skip-name-resolve mode.
mysql_1  | 2017-09-08T03:31:21.318445Z 0 [Warning] 'db' entry 'sys mysql.sys@localhost' ignored in --skip-name-resolve mode.
mysql_1  | 2017-09-08T03:31:21.318461Z 0 [Warning] 'proxies_priv' entry '@ root@localhost' ignored in --skip-name-resolve mode.
mysql_1  | 2017-09-08T03:31:21.319426Z 0 [Warning] 'tables_priv' entry 'user mysql.session@localhost' ignored in --skip-name-resolve mode.
mysql_1  | 2017-09-08T03:31:21.319455Z 0 [Warning] 'tables_priv' entry 'sys_config mysql.sys@localhost' ignored in --skip-name-resolve mode.
mysql_1  | 2017-09-08T03:31:21.323252Z 0 [Note] Event Scheduler: Loaded 0 events
mysql_1  | 2017-09-08T03:31:21.323374Z 0 [Note] mysqld: ready for connections.
mysql_1  | Version: '5.7.19'  socket: '/var/run/mysqld/mysqld.sock'  port: 0  MySQL Community Server (GPL)
mysql_1  | 2017-09-08T03:31:21.323390Z 0 [Note] Executing 'SELECT * FROM INFORMATION_SCHEMA.TABLES;' to get a list of tables using the deprecated partition engine. You may use the startup option '--disable-partition-engine-check' to skip this check.
mysql_1  | 2017-09-08T03:31:21.323398Z 0 [Note] Beginning of list of non-natively partitioned tables
mysql_1  | 2017-09-08T03:31:21.335016Z 0 [Note] End of list of non-natively partitioned tables
mysql_1  | Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it.
mysql_1  | Warning: Unable to load '/usr/share/zoneinfo/leap-seconds.list' as time zone. Skipping it.
mysql_1  | Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it.
mysql_1  | 2017-09-08T03:31:23.416481Z 5 [Warning] 'user' entry 'root@localhost' ignored in --skip-name-resolve mode.
mysql_1  | 2017-09-08T03:31:23.416577Z 5 [Warning] 'user' entry 'mysql.sys@localhost' ignored in --skip-name-resolve mode.
mysql_1  | 2017-09-08T03:31:23.416605Z 5 [Warning] 'db' entry 'performance_schema mysql.session@localhost' ignored in --skip-name-resolve mode.
mysql_1  | 2017-09-08T03:31:23.416617Z 5 [Warning] 'db' entry 'sys mysql.sys@localhost' ignored in --skip-name-resolve mode.
mysql_1  | 2017-09-08T03:31:23.416633Z 5 [Warning] 'proxies_priv' entry '@ root@localhost' ignored in --skip-name-resolve mode.
mysql_1  | 2017-09-08T03:31:23.416665Z 5 [Warning] 'tables_priv' entry 'user mysql.session@localhost' ignored in --skip-name-resolve mode.
mysql_1  | 2017-09-08T03:31:23.416681Z 5 [Warning] 'tables_priv' entry 'sys_config mysql.sys@localhost' ignored in --skip-name-resolve mode.
mysql_1  | mysql: [Warning] Using a password on the command line interface can be insecure.
mysql_1  | mysql: [Warning] Using a password on the command line interface can be insecure.
mysql_1  | mysql: [Warning] Using a password on the command line interface can be insecure.
mysql_1  | mysql: [Warning] Using a password on the command line interface can be insecure.
mysql_1  | 2017-09-08T03:31:23.431887Z 9 [Warning] 'user' entry 'root@localhost' ignored in --skip-name-resolve mode.
mysql_1  | 2017-09-08T03:31:23.431938Z 9 [Warning] 'user' entry 'mysql.sys@localhost' ignored in --skip-name-resolve mode.
mysql_1  | 2017-09-08T03:31:23.431972Z 9 [Warning] 'db' entry 'performance_schema mysql.session@localhost' ignored in --skip-name-resolve mode.
mysql_1  | 2017-09-08T03:31:23.431987Z 9 [Warning] 'db' entry 'sys mysql.sys@localhost' ignored in --skip-name-resolve mode.
mysql_1  | 2017-09-08T03:31:23.432004Z 9 [Warning] 'proxies_priv' entry '@ root@localhost' ignored in --skip-name-resolve mode.
mysql_1  | 2017-09-08T03:31:23.432123Z 9 [Warning] 'tables_priv' entry 'user mysql.session@localhost' ignored in --skip-name-resolve mode.
mysql_1  | 2017-09-08T03:31:23.432144Z 9 [Warning] 'tables_priv' entry 'sys_config mysql.sys@localhost' ignored in --skip-name-resolve mode.
mysql_1  |
mysql_1  | 2017-09-08T03:31:23.434536Z 0 [Note] Giving 0 client threads a chance to die gracefully
mysql_1  | 2017-09-08T03:31:23.434596Z 0 [Note] Shutting down slave threads
mysql_1  | 2017-09-08T03:31:23.434614Z 0 [Note] Forcefully disconnecting 0 remaining clients
mysql_1  | 2017-09-08T03:31:23.434630Z 0 [Note] Event Scheduler: Purging the queue. 0 events
mysql_1  | 2017-09-08T03:31:23.434700Z 0 [Note] Binlog end
mysql_1  | 2017-09-08T03:31:23.435339Z 0 [Note] Shutting down plugin 'ngram'
mysql_1  | 2017-09-08T03:31:23.435363Z 0 [Note] Shutting down plugin 'ARCHIVE'
mysql_1  | 2017-09-08T03:31:23.435377Z 0 [Note] Shutting down plugin 'partition'
mysql_1  | 2017-09-08T03:31:23.435386Z 0 [Note] Shutting down plugin 'BLACKHOLE'
mysql_1  | 2017-09-08T03:31:23.435396Z 0 [Note] Shutting down plugin 'MyISAM'
mysql_1  | 2017-09-08T03:31:23.435409Z 0 [Note] Shutting down plugin 'MRG_MYISAM'
mysql_1  | 2017-09-08T03:31:23.435418Z 0 [Note] Shutting down plugin 'INNODB_SYS_VIRTUAL'
mysql_1  | 2017-09-08T03:31:23.435426Z 0 [Note] Shutting down plugin 'INNODB_SYS_DATAFILES'
mysql_1  | 2017-09-08T03:31:23.435434Z 0 [Note] Shutting down plugin 'INNODB_SYS_TABLESPACES'
mysql_1  | 2017-09-08T03:31:23.435443Z 0 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN_COLS'
mysql_1  | 2017-09-08T03:31:23.435451Z 0 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN'
mysql_1  | 2017-09-08T03:31:23.435459Z 0 [Note] Shutting down plugin 'INNODB_SYS_FIELDS'
mysql_1  | 2017-09-08T03:31:23.435468Z 0 [Note] Shutting down plugin 'INNODB_SYS_COLUMNS'
mysql_1  | 2017-09-08T03:31:23.435482Z 0 [Note] Shutting down plugin 'INNODB_SYS_INDEXES'
mysql_1  | 2017-09-08T03:31:23.435492Z 0 [Note] Shutting down plugin 'INNODB_SYS_TABLESTATS'
mysql_1  | 2017-09-08T03:31:23.435500Z 0 [Note] Shutting down plugin 'INNODB_SYS_TABLES'
mysql_1  | 2017-09-08T03:31:23.435508Z 0 [Note] Shutting down plugin 'INNODB_FT_INDEX_TABLE'
mysql_1  | 2017-09-08T03:31:23.435515Z 0 [Note] Shutting down plugin 'INNODB_FT_INDEX_CACHE'
mysql_1  | 2017-09-08T03:31:23.435523Z 0 [Note] Shutting down plugin 'INNODB_FT_CONFIG'
mysql_1  | 2017-09-08T03:31:23.435531Z 0 [Note] Shutting down plugin 'INNODB_FT_BEING_DELETED'
mysql_1  | 2017-09-08T03:31:23.435539Z 0 [Note] Shutting down plugin 'INNODB_FT_DELETED'
mysql_1  | 2017-09-08T03:31:23.435547Z 0 [Note] Shutting down plugin 'INNODB_FT_DEFAULT_STOPWORD'
mysql_1  | 2017-09-08T03:31:23.435570Z 0 [Note] Shutting down plugin 'INNODB_METRICS'
mysql_1  | 2017-09-08T03:31:23.435579Z 0 [Note] Shutting down plugin 'INNODB_TEMP_TABLE_INFO'
mysql_1  | 2017-09-08T03:31:23.435586Z 0 [Note] Shutting down plugin 'INNODB_BUFFER_POOL_STATS'
mysql_1  | 2017-09-08T03:31:23.435594Z 0 [Note] Shutting down plugin 'INNODB_BUFFER_PAGE_LRU'
mysql_1  | 2017-09-08T03:31:23.435602Z 0 [Note] Shutting down plugin 'INNODB_BUFFER_PAGE'
mysql_1  | 2017-09-08T03:31:23.435610Z 0 [Note] Shutting down plugin 'INNODB_CMP_PER_INDEX_RESET'
mysql_1  | 2017-09-08T03:31:23.435617Z 0 [Note] Shutting down plugin 'INNODB_CMP_PER_INDEX'
mysql_1  | 2017-09-08T03:31:23.435625Z 0 [Note] Shutting down plugin 'INNODB_CMPMEM_RESET'
mysql_1  | 2017-09-08T03:31:23.435633Z 0 [Note] Shutting down plugin 'INNODB_CMPMEM'
mysql_1  | 2017-09-08T03:31:23.435641Z 0 [Note] Shutting down plugin 'INNODB_CMP_RESET'
mysql_1  | 2017-09-08T03:31:23.435648Z 0 [Note] Shutting down plugin 'INNODB_CMP'
mysql_1  | 2017-09-08T03:31:23.435656Z 0 [Note] Shutting down plugin 'INNODB_LOCK_WAITS'
mysql_1  | 2017-09-08T03:31:23.435664Z 0 [Note] Shutting down plugin 'INNODB_LOCKS'
mysql_1  | 2017-09-08T03:31:23.435672Z 0 [Note] Shutting down plugin 'INNODB_TRX'
mysql_1  | 2017-09-08T03:31:23.435679Z 0 [Note] Shutting down plugin 'InnoDB'
mysql_1  | 2017-09-08T03:31:23.435746Z 0 [Note] InnoDB: FTS optimize thread exiting.
mysql_1  | 2017-09-08T03:31:23.435927Z 0 [Note] InnoDB: Starting shutdown...
mysql_1  | 2017-09-08T03:31:23.537135Z 0 [Note] InnoDB: Dumping buffer pool(s) to /var/lib/mysql/ib_buffer_pool
mysql_1  | 2017-09-08T03:31:23.537513Z 0 [Note] InnoDB: Buffer pool(s) dump completed at 170908  3:31:23
mysql_1  | 2017-09-08T03:31:25.151481Z 0 [Note] InnoDB: Shutdown completed; log sequence number 12143451
mysql_1  | 2017-09-08T03:31:25.153272Z 0 [Note] InnoDB: Removed temporary tablespace data file: "ibtmp1"
mysql_1  | 2017-09-08T03:31:25.153318Z 0 [Note] Shutting down plugin 'CSV'
mysql_1  | 2017-09-08T03:31:25.153341Z 0 [Note] Shutting down plugin 'MEMORY'
mysql_1  | 2017-09-08T03:31:25.153354Z 0 [Note] Shutting down plugin 'PERFORMANCE_SCHEMA'
mysql_1  | 2017-09-08T03:31:25.153387Z 0 [Note] Shutting down plugin 'sha256_password'
mysql_1  | 2017-09-08T03:31:25.153402Z 0 [Note] Shutting down plugin 'mysql_native_password'
mysql_1  | 2017-09-08T03:31:25.153632Z 0 [Note] Shutting down plugin 'binlog'
mysql_1  | 2017-09-08T03:31:25.154298Z 0 [Note] mysqld: Shutdown complete
mysql_1  |
mysql_1  |
mysql_1  | MySQL init process done. Ready for start up.
mysql_1  |
mysql_1  | 2017-09-08T03:31:25.360932Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
mysql_1  | 2017-09-08T03:31:25.361606Z 0 [Note] mysqld (mysqld 5.7.19) starting as process 1 ...
mysql_1  | 2017-09-08T03:31:25.364436Z 0 [Note] InnoDB: PUNCH HOLE support available
mysql_1  | 2017-09-08T03:31:25.364484Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
mysql_1  | 2017-09-08T03:31:25.364497Z 0 [Note] InnoDB: Uses event mutexes
mysql_1  | 2017-09-08T03:31:25.364511Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
mysql_1  | 2017-09-08T03:31:25.364522Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.3
mysql_1  | 2017-09-08T03:31:25.364532Z 0 [Note] InnoDB: Using Linux native AIO
mysql_1  | 2017-09-08T03:31:25.364785Z 0 [Note] InnoDB: Number of pools: 1
mysql_1  | 2017-09-08T03:31:25.364914Z 0 [Note] InnoDB: Using CPU crc32 instructions
mysql_1  | 2017-09-08T03:31:25.365918Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
mysql_1  | 2017-09-08T03:31:25.371658Z 0 [Note] InnoDB: Completed initialization of buffer pool
mysql_1  | 2017-09-08T03:31:25.373208Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
mysql_1  | 2017-09-08T03:31:25.384808Z 0 [Note] InnoDB: Highest supported file format is Barracuda.
mysql_1  | 2017-09-08T03:31:25.391336Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables
mysql_1  | 2017-09-08T03:31:25.391463Z 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
mysql_1  | 2017-09-08T03:31:25.404213Z 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
mysql_1  | 2017-09-08T03:31:25.404731Z 0 [Note] InnoDB: 96 redo rollback segment(s) found. 96 redo rollback segment(s) are active.
mysql_1  | 2017-09-08T03:31:25.404753Z 0 [Note] InnoDB: 32 non-redo rollback segment(s) are active.
mysql_1  | 2017-09-08T03:31:25.405016Z 0 [Note] InnoDB: Waiting for purge to start
mysql_1  | 2017-09-08T03:31:25.455194Z 0 [Note] InnoDB: 5.7.19 started; log sequence number 12143451
mysql_1  | 2017-09-08T03:31:25.455947Z 0 [Note] Plugin 'FEDERATED' is disabled.
mysql_1  | 2017-09-08T03:31:25.458896Z 0 [Note] Found ca.pem, server-cert.pem and server-key.pem in data directory. Trying to enable SSL support using them.
mysql_1  | 2017-09-08T03:31:25.459094Z 0 [Warning] CA certificate ca.pem is self signed.
mysql_1  | 2017-09-08T03:31:25.460412Z 0 [Note] Server hostname (bind-address): '*'; port: 3306
mysql_1  | 2017-09-08T03:31:25.460486Z 0 [Note] IPv6 is available.
mysql_1  | 2017-09-08T03:31:25.460505Z 0 [Note]   - '::' resolves to '::';
mysql_1  | 2017-09-08T03:31:25.460526Z 0 [Note] Server socket created on IP: '::'.
mysql_1  | 2017-09-08T03:31:25.460875Z 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
mysql_1  | 2017-09-08T03:31:25.462385Z 0 [Warning] 'user' entry 'root@localhost' ignored in --skip-name-resolve mode.
mysql_1  | 2017-09-08T03:31:25.462432Z 0 [Warning] 'user' entry 'mysql.sys@localhost' ignored in --skip-name-resolve mode.
mysql_1  | 2017-09-08T03:31:25.462460Z 0 [Warning] 'db' entry 'performance_schema mysql.session@localhost' ignored in --skip-name-resolve mode.
mysql_1  | 2017-09-08T03:31:25.462471Z 0 [Warning] 'db' entry 'sys mysql.sys@localhost' ignored in --skip-name-resolve mode.
mysql_1  | 2017-09-08T03:31:25.462487Z 0 [Warning] 'proxies_priv' entry '@ root@localhost' ignored in --skip-name-resolve mode.

我们可以运行一下 docker ps 来看一下现在 Docker 的运行情况。

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                      NAMES
dfbe025c3dce        nginx:1.12-alpine   "nginx -g 'daemon ..."   2 minutes ago       Up 13 seconds       0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   lumen550_nginx_1
b9088942eff5        tommylau/php:7.1    "docker-php-entryp..."   2 minutes ago       Up 13 seconds       9000/tcp                                   lumen550_php_1
8f67ea7e4a75        mysql:5.7           "docker-entrypoint..."   2 minutes ago       Up 13 seconds       3306/tcp                                   lumen550_mysql_1

可以看到几个服务都已经在正常运行了。

Lumen Composer 安装

几个服务跑起来了以后,并不代表着 Lumen 就可以正常使用了,因为还有很多的第三方依赖关系,是需要通过 Composer 来完成的。

这个时候我们需要进入到 PHP Container 的内部,来执行 PHP Composer 相关的命令来加载第三方的库。

docker exec -ti lumen550_php_1 sh

通过上面的命令,我们就可以进入到 PHP 的容器里面。

$ composer install --optimize-autoloader --no-dev
Loading composer repositories with package information
Updating dependencies
Package operations: 41 installs, 0 updates, 0 removals
  - Installing symfony/polyfill-mbstring (v1.5.0): Downloading (100%)
  - Installing symfony/http-foundation (v3.3.8): Downloading (100%)
  - Installing symfony/event-dispatcher (v3.3.8): Downloading (100%)
  - Installing psr/log (1.0.2): Downloading (100%)
  - Installing symfony/debug (v3.3.8): Downloading (100%)
  - Installing symfony/http-kernel (v3.3.8): Downloading (100%)
  - Installing nikic/fast-route (v1.2.0): Downloading (100%)
  - Installing mtdowling/cron-expression (v1.2.0): Downloading (100%)
  - Installing monolog/monolog (1.23.0): Downloading (100%)
  - Installing symfony/translation (v3.3.8): Downloading (100%)
  - Installing nesbot/carbon (1.22.1): Downloading (100%)
  - Installing psr/simple-cache (1.0.0): Downloading (100%)
  - Installing psr/container (1.0.0): Downloading (100%)
  - Installing illuminate/contracts (v5.5.2): Downloading (100%)
  - Installing doctrine/inflector (v1.2.0): Downloading (100%)
  - Installing illuminate/support (v5.5.2): Downloading (100%)
  - Installing symfony/finder (v3.3.8): Downloading (100%)
  - Installing illuminate/filesystem (v5.5.2): Downloading (100%)
  - Installing illuminate/container (v5.5.2): Downloading (100%)
  - Installing illuminate/events (v5.5.2): Downloading (100%)
  - Installing illuminate/view (v5.5.2): Downloading (100%)
  - Installing illuminate/translation (v5.5.2): Downloading (100%)
  - Installing illuminate/validation (v5.5.2): Downloading (100%)
  - Installing symfony/process (v3.3.8): Downloading (100%)
  - Installing illuminate/database (v5.5.2): Downloading (100%)
  - Installing symfony/console (v3.3.8): Downloading (100%)
  - Installing illuminate/console (v5.5.2): Downloading (100%)
  - Installing illuminate/queue (v5.5.2): Downloading (100%)
  - Installing illuminate/pipeline (v5.5.2): Downloading (100%)
  - Installing illuminate/pagination (v5.5.2): Downloading (100%)
  - Installing illuminate/session (v5.5.2): Downloading (100%)
  - Installing illuminate/http (v5.5.2): Downloading (100%)
  - Installing illuminate/hashing (v5.5.2): Downloading (100%)
  - Installing illuminate/encryption (v5.5.2): Downloading (100%)
  - Installing illuminate/config (v5.5.2): Downloading (100%)
  - Installing illuminate/cache (v5.5.2): Downloading (100%)
  - Installing illuminate/bus (v5.5.2): Downloading (100%)
  - Installing illuminate/broadcasting (v5.5.2): Downloading (100%)
  - Installing illuminate/auth (v5.5.2): Downloading (100%)
  - Installing laravel/lumen-framework (v5.5.0): Downloading (100%)
  - Installing vlucas/phpdotenv (v2.4.0): Downloading (100%)
Writing lock file
Generating optimized autoload files
$ composer dump-autoload --optimize
Generating optimized autoload files

这样,所有需要的文件就算齐备了。

一般 macOS 下 VirtualBox 默认的虚拟机地址为:192.168.99.100

所以我们访问下:http://192.168.99.100/

应该就会看到正在运行的 Lumen 输出了。

参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,784评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,745评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,702评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,229评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,245评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,376评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,798评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,471评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,655评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,485评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,535评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,235评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,793评论 3 304
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,863评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,096评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,654评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,233评论 2 341

推荐阅读更多精彩内容