Mac下安装docker,并使用docker-compose安装PHP开发环境

经验 590 浏览

安装 Docker for Mac 系统最低需要 macOS 10.10.3 Yosemite。

| Homebrew安装

查看是否安装Homebrew

$ brew --version
Homebrew 2.1.2

若未安装,我们来安装下:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

若已安装,我们执行以下命令:

$ brew cask install docker

==> Creating Caskroom at /usr/local/Caskroom
==> We'll set permissions properly so we won't need sudo in the future
Password:          # 输入 macOS 密码
==> Satisfying dependencies
==> Downloading https://download.docker.com/mac/stable/21090/Docker.dmg
######################################################################## 100.0%
==> Verifying checksum for Cask docker
==> Installing Cask docker
==> Moving App 'Docker.app' to '/Applications/Docker.app'.
🍺  docker was successfully installed!

在载入 Docker app 后,点击 Next,可能会询问你的 mac 登陆密码,你输入即可。之后会弹出一个 Docker 运行的提示窗口,状态栏上也有个小鲸鱼的图标()。

| 手动下载安装

如果需要手动下载,请点击以下链接下载 Stable(季度更新) 或 Edge(月度更新)版本的 Docker for Mac。没有vpn下载很慢,耐心等待。

如同 mac 其它软件一样,安装也非常简单,双击下载的 .dmg 文件,然后将鲸鱼图标拖拽到 Application 文件夹即可。

| 镜像加速

鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们需要配置加速器来解决,网易的镜像地址:http://hub-mirror.c.163.com

在任务栏点击  -> Perferences... -> Daemon -> Registry mirrors。在列表中填写加速器地址,修改完成之后,点击 Apply & Restart 按钮,Docker 就会重启并应用配置的镜像地址了。

| 检查安装信息

我们可以通过命令来检查版本和配置信息。

$ docker --version
Docker version 18.06.1-ce, build e68fc7a

$ docker info
    ...
Registry Mirrors:
 http://hub-mirror.c.163.com/
    ...

| 运行容器

当docker安装成功后,我们可以尝试运行一个docker容器,镜像不存在会自动下载并构建。例如nginx容器:

$ docker run -d -p 80:80 --name webserver nginx

访问 localhost 出现nginx欢迎页面则ok。

| 相关命令

我们上面构建了nginx容器,接下来可以查看相关容器信息,查看下载的镜像:

$ docker images
REPOSITORY   TAG      IMAGE ID      CREATED         SIZE
nginx        latest   d3dcc25e0dc4  26 seconds ago  17.8MB

查看运行中的容器

$ docker ps
CONTAINER ID IMAGE        COMMAND       CREATED         STATUS         PORTS               NAMES
c2828bf8d8f1 nginx:latest "nginx -g …"  26 seconds ago  Up 25 seconds  0.0.0.0:80->80/tcp  webserver

查看所有容器

$ docker ps -a

停止容器,容器NAMES

$ docker stop webserver

删除容器,容器NAMES

$ docker rm webserver

删除镜像,只需要 IMAGE ID 前几位就行了

$ docker rmi d3dcc

查看docker日志,容器NAMES

$ docker logs webserver

我们将测试的nginx容器和镜像删除,接下来我们就用docker-compose安装PHP环境。

| 安装PHP环境

一、 安装依赖

git

docker

docker-compose

1. 查看是否安装git

$ git --version
git version 2.19.0

若未安装,则安装:

brew install git

2. Docker for mac 已包含docker-compose,无需再单独安装。

$ docker-compose --version
docker-compose version 1.22.0, build f46880f

二、克隆项目

github上的项目,没有vpn可能下载极慢。

$ git clone https://github.com/yeszao/dnmp.git

三、开始使用(进入项目目录)

注意: 由于版本不同,请务必阅读README.md文件,并按照操作执行

这里我们使用 docker-compose-simple.yml 文件内的服务,是简单版本,只包含Nginx、PHP7.2和MySQL8 `3`个服务。如需更多服务,比如Redis、PHP5.6、MongoDB,ElasticSearch等,请参考 docker-compose-full.yml 文件内的服务列表,把需要的拷贝到 docker-compose.yml 文件再`up`即可。

$ cd dnmp
$ cp env.sample .env
$ mv docker-compose-simple.yml docker-compose.yml
$ docker-compose up -d
...
Creating dnmp_php72_1 ... done 
Creating dnmp_nginx_1 ... done
Creating dnmp_mysql_1 ... done

此时系统开始自动下载镜像,并且构建容器。由于编译安装,时间会比较长,耐心等待。

出现以上3个容器则说明安装成功,访问 localhost 出现欢迎使用DNMP则大功告成。

docker-compose的常用命令

查看运行的容器:

$ docker-compose ps
    Name                  Command              State   Ports                     
------------------------------------------------------------------------------------------------
dnmp_mysql_1   docker-entrypoint.sh mysqld     Up      0.0.0.0:3306->3306/tcp, 33060/tcp             
dnmp_nginx_1   nginx -g daemon off;            Up      0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp      
dnmp_php72_1   docker-php-entrypoint php-fpm   Up      0.0.0.0:9000->9000/tcp

停用容器:

$ docker-compose stop        #停用docker-compose.yml服务下所有容器
$ docker-compose stop mysql  #停用docker-compose.yml服务下mysql容器

重启容器

$ docker-compose restart        #重启docker-compose.yml服务下所有容器
$ docker-compose restart mysql  #重启docker-compose.yml服务下mysql容器

四、注意事项

1. docker命令在全局可以执行,docker-compose 命令必须在 docker-compose.yml 所在目录执行。

2. conf/conf.d/localhost.conf: 这个是nginx的vhost配置文件,如果使用不同的php版本,修改fastcgi_pass php72:9000中的php72为对应版本号即可。

3. 在php项目中mysql连接的host都应该使用mysql,例如mysql配置文件host = 127.0.0.1,这里直接写成host = mysql 即可。

4. 所有在容器中的改动,下次 docker-compose up -d 时都会被重新覆盖掉。所以容器内部的操作最好是在Dockerfile文件中修改好,然后执行命令去自动生成。

|  版权声明:本文为博主原创文章,转载请注明出处。