`
xieye
  • 浏览: 830806 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

利用docker构建完整centos环境开发php

阅读更多
利用docker构建完整centos环境开发php

本人原创文章,转载请注明出处。注意,本文的开发环境是win7,使用docker-toolbox

当前日期:2019-06-16

概述
虽然已经有开发php的docker套件,但是有时仍然想在独立的centos环境下开发php,当然,宿主机是windows电脑。
此时,应用本文,可以方便的开发php,把自己的电脑当成centos。

要点:
阿里云的docker管理后台地址是特别的:
https://account.aliyun.com/login/login.htm?oauth_callback=https%3A%2F%2Fcr.console.aliyun.com%2F%3Fspm%3D5176.1971733.0.2.sezm8g%26accounttraceid%3Dca51394a-9a94-4bf4-af57-e60459167886#/imageSearch

https://cr.console.aliyun.com/cn-hangzhou/new

1、虽然docker教程上说RUN指令应该少些,可是实际构建时,每次失败只会从最近的RUN指令重新构建。所以,当构建命令多时,适当分隔成几个RUN指令,会很有利。
2、remi是一个重要的仓库,且其官网有中国镜像,但本文未考虑。
3、mysql那个有点麻烦,所以,我使用套件里的mysql。而不把mysql装在centos里。
4、利用docker-compose套件安装使用镜像的好处是,进入容器,启动容器的参数都可以配置在docker-compose.yml 这个文件中,明显比单独使用docker 命令好使。
5、安装centos的开发环境,时间较长,得有心理准备。但装好后,使用是很方便的。
6、本文构建未考虑清理,考虑是更好的。
7、利用本文构建php开发环境时,现在有两种方案,一种是使用标准的、docker官方推荐的每个进程使用一个容器的方法,本文代码里有php56和php72,另一种方法是使用独立的centos开发php,当然,这两种情况都需要使用mysql-db。
8、为了便于记住键盘命令,把.bash_history映射到共享文件夹。
9、.bashrc文件可以随意修改,自行配置喜欢的centos环境。
10、nginx的配置,和php的配置文件,可以随意修改。只需重新up镜像(不用重装)即可,太方便啦!!

命令列表
从下载地址clone后,首先得clone在 虚拟机的共享目录下。假设code是共享目录。在c盘根目录。


git clone https://github.com/xieye114/docker_multiple_php.git code

然后进入docker,
cd /code/myapp/build

下面这个文件从网上拷贝过来。进行构建centos。等构建完centos,再构建其他,其他都快。
快的原因是原始镜像较完备,而我是从标准的centos7.4的镜像构建的,差很多东西。
/code/docker-compose build centos
这一步很长时间,如果网络不顺畅,可以用ctrl+c强行中止,再重复执行。联通网较好。

等执行完之后
/code/docker-compose up -d centos
或者
/code/docker-compose up -d centos mysql-db
然后
/code/docker-compose exec centos bash
现在就可以愉快的在centos里玩耍了!

下载安装
https://github.com/xieye114/docker_multiple_php
里面有具体的安装步骤,但centos未来得及写进去。

部分源码
docker-compose.yml文件

services:

  centos:
    build: ./centos
    privileged: true
    ports:
      - "80:80"
      - "443:443"
      - "8001:8001"
    volumes:
      - ../../workspace:/var/www:rw
      - ../data/centos_composer/cache:/root/.composer/cache:rw
      - ../data/centos_composer_vendor:/root/vendor:rw
      - ../data/centos_redis:/data/centos_redis:rw
      - ./centos/centos_file/.bash_history:/root/.bash_history:rw
      - ./centos/centos_file/.bashrc:/root/.bashrc:rw
      - ./centos/centos_file/start:/bin/start:rw
      - ./centos/centos_file/crontab:/etc/crontab:rw
      - ./centos/php/php.ini:/opt/remi/php72/root/etc/php.ini:ro
      - ./centos/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
      - ./centos/nginx/conf.d:/etc/nginx/conf.d:ro
    restart: always
    command: "/usr/sbin/init"



centos的Dockerfile

FROM centos:7.4.1708

WORKDIR /root

RUN curl --silent --location https://rpm.nodesource.com/setup_10.x | bash - \
  && yum install -y nodejs \
  && curl -o- -L https://yarnpkg.com/install.sh | bash 
  

RUN yum install -y wget epel-release \
  && yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm \
  && yum install -y yum-utils \
  && yum-config-manager --enable remi-php72 \
  && yum install -y nginx php72 redis zip unzip rsync crontabs vim ntp supervisor 
  
RUN yum install -y php72-php-devel  php72-php-fpm  php72-php-mbstring php72-php-memcache php72-php-redis  php72-php-mysqli php72-php-mysqlnd  php72-php-pdo  php72-php-bcmath php72-php-dom php72-php-gd php72-php-gmp php72-php-igbinary php72-php-imagick   php72-php-mcrypt  php72-php-pdo_mysql php72-php-posix php72-php-simplexml  php72-php-opcache php72-php-xsl php72-php-xmlwriter php72-php-xmlreader php72-php-xml php72-php-swoole php72-php-zip php72-php-phalcon \
  && ln -s /usr/bin/php72 /usr/bin/php \
  && sed -i 's/user\ =\ apache/user\ =\ nginx/g' /etc/opt/remi/php72/php-fpm.d/www.conf \
  && sed -i 's/group\ =\ apache/group\ =\ nginx/g' /etc/opt/remi/php72/php-fpm.d/www.conf 
  
  
RUN curl https://setup.ius.io | sh \
  && yum remove -y git \
  && yum install -y git2u \
  && git config --global core.autocrlf false \
  && git config --global core.safecrlf false \
  && git config --global user.name 'test' \
  && git config --global user.email 'test@qq.com' \
  && curl -s http://getcomposer.org/installer | php \
  && mv composer.phar /usr/local/bin/ \
  && chmod a+x /usr/local/bin/composer.phar \
  && ln -s /usr/local/bin/composer.phar  /usr/local/bin/composer \
  && composer config -g repo.packagist composer https://packagist.laravel-china.org 

EXPOSE 80 443 6379


.bashrc 文件如下

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi


PS1='[\u@centos in docker \W]\$ '

timedatectl set-timezone Asia/Shanghai
localectl set-locale LANG=zh_CN.utf8

export PATH="$HOME/.yarn/bin:$HOME/.config/yarn/global/node_modules/.bin:$PATH"
yarn config set registry https://registry.npm.taobao.org

systemctl start php72-php-fpm
systemctl start redis
systemctl start nginx
systemctl start crond
systemctl start ntpd
# systemctl start supervisord


0
0
分享到:
评论

相关推荐

    CentOS7 自动化搭建Nginx+PHP7+Mysql+Docker+Docker-Compose Shell脚本

    CentOS7 自动化搭建Nginx+PHP7+Mysql+Docker+Docker-Compose Shell脚本,Docker version 18.06.1-ce,docker-compose version 1.22.0

    基于Docker官方php:5.6.40-fpm镜像构建支持66个常见模组的php5.6.40镜像

    基于RHEL7(CentOS7.9)部署docker环境(23.0.1、24.0.2),所构建的php5.6.40镜像应用于RHEL7-9(如AlmaLinux9.1),但因为docker的特性,适用场景是不限于此的。 # 部署docker环境 # 创建自定义网络示例 docker network...

    基于Docker官方php:7.4.33-fpm镜像构建支持67个常见模组的php7.4.33镜像

    基于RHEL7(CentOS7.9)部署docker环境(23.0.1、24.0.2),所构建的php7.4.33镜像应用于RHEL7-9(如AlmaLinux9.1),但因为docker的特性,适用场景是不限于此的。 # 部署docker环境 # 创建自定义网络示例 docker network ...

    基于Docker官方php:7.1.33-fpm镜像构建支持67个常见模组的php7.1.33镜像

    基于RHEL7(CentOS7.9)部署docker环境(23.0.1、24.0.2),所构建的php7.1.33镜像应用于RHEL7-9(如AlmaLinux9.1),但因为docker的特性,适用场景是不限于此的。 # 部署docker环境 # 创建自定义网络示例 docker network ...

    docker-www:基于 CentOS 7 构建的可靠现货 Apache2PHP-FPM 基础映像

    不人道的人/www 这是一个基本的 CentOS7/Apache/PHP-FPM Docker 镜像。 它可以通过在 /var/www 上安装主机卷来单独使用,但它旨在成为更复杂设置的模型。使用docker run -d -p 80:80 -v /path/to/site/files:/var/...

    docker-centos-phabricator:Docker 为 Phabricator 构建存储库。 基于internavenuedocker-centos-php

    docker-centos-phabricator 一个 Dockerfile,它生成一个基于 CentOS 的 Docker 镜像,它将运行最新的稳定。 构建基于 。包含的包(及其依赖项) Phabricator (Phabricator, Arcanist, libphutil) 吉特示例 Makefile...

    apache-php:Docker使用Apache 2.4.37和PHP 7.6.16为映像构建文件

    这是我的带有PHP 7.6.16 docker image的Apache 2.4.37的构建源。 该映像基于CentOS 8(最新版本)构建。 它还包括用于mysql访问的php-mysqli。

    CentOS 8.5 x86_64 OVF.rar

    CentOS以其稳定性和兼容性著称,广泛应用于服务器部署、开发环境以及云计算平台。此外,CentOS 8.5作为中间版本,包含了大量更新的安全补丁、软件包升级以及系统优化。 【压缩包子文件的文件名称列表】只有一个文件...

    PHP开发环境详细配置过程

    在构建PHP开发环境时,我们需要关注三个主要组件:Apache服务器、MySQL数据库以及PHP解释器。以下是如何在Windows和Linux系统中分别配置这些组件的详细步骤。 **一、下载组件** 1. **Apache**:你可以从Apache官方...

    docker-lnmp:基于docker-compose构建的lnmp环境,包含php7,nginx,mysql,redis,memcached,mongodb,atlas,cron

    centos7下基于docker-compose构建的lnmp环境,本环境构建过程使用的是yii2进行相关测试,所以可以支持yii2的运行 LNMP(Docker + Docker-compose + Nginx + MySQL5.7 + ...

    CentOS装LAMP服务器(Apache2+PHP5+MySQL)

    在IT领域,LAMP(Linux、Apache、MySQL、PHP)是一种常见的开源软件堆栈,用于构建动态网站和网络应用程序。本教程将详细讲解如何在CentOS操作系统上安装配置LAMP服务器,包括Apache2、PHP5和MySQL5.0。 首先,确保...

    Docker下CMS的部署总体设计说明书.docx

    本文档旨在详细介绍如何在Linux操作系统环境中利用Docker容器技术部署内容管理系统(Content Management System, CMS)。CMS是一种用于管理和发布网站内容的工具,它能够帮助用户无需深入掌握HTML或其他编程语言即可...

    docker-nginx-hhvm:在 CentOS-7 上使用 Nginx+HHVM 的 Docker

    HHVM 版本 3.6-dev(下一个 LTS - 长期支持)从 CentOS-7 上的源代码构建。 注意:如果你想自己构建它,需要一段时间......(小时)。 HHVM 服务器已启动并正在运行,并且已针对默认虚拟主机进行了配置。 一旦请求...

    linux_PHP环境full.zip

    8. **版本管理**:在开发环境中,可能需要在不同PHP版本间切换,这时可以使用多版本管理工具,如PHP-FPM或Docker容器,来方便地在不同PHP版本间进行切换。 9. **测试与调试**:完成安装后,需通过编写简单的PHP脚本...

    php-docker:[已弃用]用于PHP Docker Boilerplate的预构建PHP Docker映像

    预建PHP Docker Boilerplate映像 该Dockerfile用于以下方面的预构建映像: 支持的发行版: Ubuntu 12.04-PHP 5.3,LTS(精确) Ubuntu 14.04-PHP 5.5,LTS(可信赖) Ubuntu 15.04-PHP 5.6(生动) Ubuntu ...

    wordPress 的主流模板

    - **Java**:虽然WordPress主要基于PHP开发,但Java可以在构建与WordPress集成的应用或插件时发挥作用,特别是在需要高性能和企业级功能时。 - **PHP**:WordPress的核心是用PHP编写的,这使得开发者能够轻松地修改...

    rpmbuild-php-7.1:适用于rpmbuildPHP 7.1(CentOS 67)

    将您的构建用户添加到Docker组(管理Docker所需): usermod -aG docker 并重新登录 启动Docker守护程序 systemctl enable docker systemctl start docker 构建主机上的端口80应该是空闲的(停止nginx / httpd或...

    更快捷更方便的phpnginx环境定制化方案

    在构建高效的Web服务环境中,PHP和Nginx的组合是一个常用的选择,因其性能优秀、配置灵活而备受开发者青睐。本文将深入探讨如何更快捷、更方便地进行PHP与Nginx环境的定制化,以便更好地满足开发和部署需求。 首先...

    兄弟连LAMP环境源码包

    LAMP(Linux、Apache、MySQL、PHP)是Web开发领域常用的一种开源软件组合,用于构建高效、稳定的Web服务器环境。这个“兄弟连LAMP环境源码包”显然是一个包含了搭建LAMP环境所需部分源码的集合,不过值得注意的是,...

    php版自动安装

    在IT行业中,PHP是一种广泛应用的服务器端脚本语言,尤其在Web开发领域有着广泛的使用。...在实际操作中,还可以通过编写脚本或利用自动化工具(如Ansible、Docker等)进一步简化和标准化这个流程。

Global site tag (gtag.js) - Google Analytics