阅读本文你将知道
- docker-compose的配置文件编写
- dockerfile的编写
Docker-Compose提要
Docker-Compose
项目是Docker
官方的开源项目,负责实现对Docker
容器集群的快速编排。
Docker-Compose
的工程配置文件默认为docker-compose.yml
,使用一个Dockerfile
模板文件,可以让用户很方便的定义一个单独的应用容器。在工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个Web项目,除了Web服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。
Compose
允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project
。
Docker-Compose
项目由Python
编写,调用Docker
服务提供的API来对容器进行管理。因此,只要所操作的平台支持Docker API
,就可以在其上利用Compose
来进行编排管理。
Docker-Compose安装
- ubuntu
apt-get update apt-get install docker-compose
- mac
安装图形化工具, 默认应该带的 如果没有使用brew安装
- windows
安装图形化工具, 默认应该带的
编写docker-compose.yml及容器相关dockerfile
- 先相关创建项目目录
// 创建php-fpm/nginx的配置文件 目录 用于映射 // 手动构建Dockerfile mkdir ~/docker mkdir ~/docker/aoppp mkdir ~/docker/aoppp/nginx touch ~/docker/aoppp/nginx/nginx.conf mkdir ~/docker/aoppp/php-fpm touch ~/docker/aoppp/php-fpm/Dockerfile touch ~/docker/aoppp/php-fpm/php-ini-overrides.ini touch ~/docker/aoppp/docker-compose.yml
- docker-compose.yml
version: "3.1" services: mysql: image: mysql:5.7 container_name: php-longing-mysql working_dir: /application volumes: - .:/application environment: - MYSQL_ROOT_PASSWORD=1234567 - MYSQL_DATABASE=test - MYSQL_USER=test - MYSQL_PASSWORD=1234567 ports: - "8086:3306" webserver: image: nginx:alpine container_name: php-longing-webserver working_dir: /application volumes: - ./www:/application - ./aoppp/nginx/nginx.conf:/etc/nginx/conf.d/default.conf ports: - "81:80" php-fpm: build: aoppp/php-fpm container_name: php-longing-php-fpm working_dir: /application volumes: - ./www:/application - ./aoppp/php-fpm/php-ini-overrides.ini:/etc/php/7.2/fpm/conf.d/99-overrides.ini
- nginx.conf
server { listen 80; client_max_body_size 108M; access_log /var/log/nginx/application.access.log; server_name www.longing.com; root /application/bbs/public; index index.php; if (!-e $request_filename) { rewrite ^.*$ /index.php last; } location ~ \.php$ { fastcgi_pass php-fpm:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PHP_VALUE "error_log=/var/log/nginx/application_php_errors.log"; fastcgi_buffers 16 16k; fastcgi_buffer_size 32k; include fastcgi_params; } }
- Dockerfile
FROM phpdockerio/php72-fpm:latest WORKDIR "/application" # Fix debconf warnings upon build ARG DEBIAN_FRONTEND=noninteractive # Install selected extensions and other stuff RUN apt-get update \ && apt-get -y --no-install-recommends install php-memcached php7.2-mysql php7.2-pgsql php-redis php7.2-sqlite3 php-xdebug php7.2-bz2 php7.2-gd php-igbinary php7.2-imap php-ssh2 php-yaml \ && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* # Install git RUN apt-get update \ && apt-get -y install git \ && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* # Install vim RUN apt-get update \ && apt-get -y install vim \ && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*
- php-ini-overrides.ini
upload_max_filesize = 100M post_max_size = 108M
docker-compose操作
docker-compose.yml文件已经完成,相关端口、目录映射,Dockerfile也已经可以了。那这个时候需要使用docker-compose来启动这个项目
首先进入docker-compose.yml所在的目录,然后运行 docker-compose up
启动项目,可以看到如下图
- docker-compose相关命令
docker-compose up // 直接启动 可以看到日志输出 docker-compose up -d // 后台启动 docker-compose stop // 停止项目 docker-compose restart // 重启项目 docker-compose down // 会停掉容器,并删除掉容器
容器已经启动成功了,然后我们安装一个laravel项目来测试
配置Laravel项目启动实现数据库查询
博主这边打算配置Laravel来进行数据库查询, 所以我这边进入容器利用composer安装。
- composer阿里镜像
# 进入容器 docker exec -it php-longing-php-fpm bash # 配置阿里云镜像 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
- 直接创建laravel项目
composer create-project --prefer-dist laravel/laravel bbs "5.6.*"
- Laravel配置数据库连接
DB_CONNECTION=mysql DB_HOST=mysql DB_PORT=3306 DB_DATABASE=test DB_USERNAME=test DB_PASSWORD=1234567
- 编写laravel路由
// routers/web.php Route::get('/test', function () { $res = \DB::table('test')->select()->get(); dd($res); });
我已经利用navicat
给test
表添加数据了, 已经👌