构建镜像

简介

  创建Docker镜像的方式,DockerFile是描述文件,可使用#作注释.可食用RUN命令在构建的时候执行相关操作.如下例,在构架的时候安装了php及其拓展,composer.

编写Dockerfile

# 基于centos:7
FROM centos:7
# 所属人信息
MAINTAINER QvBiLam qvbilam@163.com
# 安装工具
RUN yum install -y curl zip unzip  wget openssl-devel gcc-c++ make autoconf
# 安装php
RUN yum install -y epel-release
RUN rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
RUN yum clean all
RUN yum update -y
RUN yum install -y php72w-fpm php72w-devel php72w-openssl php72w-mbstring php72w-pdo php72w-mysqlnd php72w-pecl-redis php72w-pecl-mongodb php72w-pecl-memcached 
# 安装composer 设置阿里镜像
RUN curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/bin/composer
RUN composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
# 声明端口
EXPOSE 80
EXPOSE 443
EXPOSE 9501

构建镜像

# 构建 -t 镜像名(只能小写):版本后. `.`必须加.
docker build -t sc-qvbilam-easyswoole-ide:0.1 .
# 查看本地镜像
docker images
# 可以看到有sc-qvbilam-easyswoole-ide和centos.
# 因为自己构建的项目是基于centos.所以会自动pull centos
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
sc-qvbilam-easyswoole-ide   0.1                 7326331ca50c        51 seconds ago      1GB
centos                      7                   5e35e350aded        4 months ago        203MB

启动容器

# 后台运行,命名为my-easyswoole 强烈建议启动的时候指定端口 -p 9501:9501
docker run --name myeasyswoole -dit sc-qvbilam-easyswoole-ide:0.1
# 查看容器是否启动
docker ps
# 存在qvbilam-easyswoole-ide:0.1说明启动成功
CONTAINER ID        IMAGE                        COMMAND             CREATED             STATUS              PORTS                       NAMES
d9fa94cbf5b2        sc-qvbilam-easyswoole-ide:0.1   "/bin/bash"         7 seconds ago       Up 6 seconds        80/tcp, 443/tcp, 9501/tcp   myeasyswoole
# 通过exec+容器id进入容器
docker exec -it d9fa94cbf5b2 /bin/bash
# 或通过attach+容器id进入容器
docker attach  d9fa94cbf5b2

安装Swoole

# 创建存放包目录
mkdir -p /data/package
cd /data/package/
# 下载swoole
wget https://github.com/swoole/swoole-src/archive/v4.4.16.tar.gz
tar -zxvf v4.4.16.tar.gz
cd swoole-src-4.4.16/
phpize
./configure
make && make install
# 修改配置
vi /etc/php.ini
# 添加
extension=swoole.so
# 保存退出

安装框架

mkdir -p /data/wwwroot/easyswoole
cd /data/wwwroot/easyswoole/
composer require easyswoole/easyswoole=3.x && php vendor/easyswoole/easyswoole/bin/easyswoole install
# 成功界面
  ______                          _____                              _
 |  ____|                        / ____|                            | |
 | |__      __ _   ___   _   _  | (___   __      __   ___     ___   | |   ___
 |  __|    / _` | / __| | | | |  \___ \  \ \ /\ / /  / _ \   / _ \  | |  / _ \
 | |____  | (_| | \__ \ | |_| |  ____) |  \ V  V /  | (_) | | (_) | | | |  __/
 |______|  \__,_| |___/  \__, | |_____/    \_/\_/    \___/   \___/  |_|  \___|
                          __/ |
                         |___/
install success,enjoy!
dont forget run composer dump-autoload

测试

# vi App/HttpController/Index.php
# 添加在index()下
<?php
  
  
function hello()
{
    $this->response()->write('test');
}

function test()
{
    $link = mysqli_connect('192.168.128.136','root','123456','angel');
    $sql = 'select * from users';
    $query = mysqli_query($link,$sql);
    $result = mysqli_fetch_assoc($query);
    $json = json_encode($result);
    $this->response()->write($json);
}
# 后台运行
php easyswoole start d
# 本机访问
curl 127.0.0.1:9501/index/index
curl 127.0.0.1:9501/index/hello
curl 127.0.0.1:9501/index/test

上传镜像

提交容器

# 获取需要上传容器的container id
docker ps -a
# 容器提交成镜像 -a作者名. -m备注 -p提交时暂停容器 -c创建新镜像
docker commit -a 'qvbilam' -m 'install easyswoole' -p d9fa94cbf5b2 sc-qvbilam-easyswoole-ide:0.1
# 修改docker镜像标签,dockerhub名字/镜像名
docker tag sc-qvbilam-easyswoole-ide:0.1 qvbilam/sc-qvbilam-easyswoole-ide:1.0
# 查看镜像
docker images
# 可以看到多了一个qvbilam/sc-qvbilam-easyswoole-ide的1.0版本
REPOSITORY                          TAG                 IMAGE ID            CREATED             SIZE
sc-qvbilam-easyswoole-ide           0.1                 87a58e60f7ff        11 minutes ago      1.12GB
qvbilam/sc-qvbilam-easyswoole-ide   1.0                 87a58e60f7ff        11 minutes ago      1.12GB
centos                              7                   5e35e350aded        4 months ago        203MB
# 登录
docker login
# 推送至docker hub
dockr push qvbilam/sc-qvbilam-easyswoole-ide:1.0

进入DockerHub查看项目
image-20200316094723931.png

Last modification:March 16th, 2020 at 10:40 am