设为首页 加入收藏

TOP

Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境(一)
2019-09-17 17:01:33 】 浏览:59
Tags:Docker 笔记 基于 容器 构建 运行 nginx php mysql mariadb 服务 环境

在编辑Dockerfile过程中参考了以下相关范例:https://hub.docker.com/_/php/https://hub.docker.com/_/mysql/https://hub.docker.com/_/nginx/在build镜像时可能报出异常“containerd: container not started”,此时可能需要重启containerd或系统。

要删除某些无用的images,可执行如下命令:

sudo docker rmi $(sudo docker images -a|grep none|awk '{print $3 }')

 

 

 

一.安装Docker

sudo apt-get update 
sudo apt-get install docker.io

  

二.在Home下创建如下docker目录(含源码安装包)

conf:配置文件目录,包含nginx.conf、php.ini、 my.cnf以及source.list等。当然这些配置文件并非必须的,可在相关的安装目录下去复制修改源配置文件,只是个人喜欢先准备好这些将要用到的文件。

packages:安装包目录,对于mysql的安装本人采用mariadb源码安装,所有的安装包都是官方下载的最新版。至于phpMyAdmin包是本人在开发测试时喜欢使用的mysql管理界面(客户端),如果最后phpMyAdmin能在容器中跑起来,也就初步说明整个创建过程是成功的。

Dockerfile-PHP-FPM:为构建php镜像而要编写的Dockerfile

Dockerfile-Mariadb:为构建mariadb镜像而要编写的Dockerfile

Dockerfile-Nginx:为构建nginx镜像而要编写的Dockerfile

 

三.构建mariadb镜像并运行mariadb容器

1.编辑Dockerfile-Mariadb

FROM ubuntu
MAINTAINER cenze <272666745@qq.com>

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& groupadd -r mysql \
&& useradd -r -g mysql mysql
ADD conf/sources.list /etc/apt/
RUN apt-get update \
&& apt-get install -y g++ cmake vim libncurses5-dev zlib1g-dev

ENV PKGS="/usr/local/pkgs"
ADD packages/mariadb-10.1.19.tar.gz $PKGS/

# install mariadb
WORKDIR $PKGS/mariadb-10.1.19
ENV PREFIX_MARIADB="/usr/local/mariadb"
RUN mkdir $PREFIX_MARIADB \
&& cmake -DCMAKE_INSTALL_PREFIX="$PREFIX_MARIADB" . \
&& make \
&& make install

ENV PATH $PREFIX_MARIADB/bin:$PATH
ADD conf/my.cnf /etc/
RUN chown -R mysql:mysql $PREFIX_MARIADB/data \
&& cd $PREFIX_MARIADB \
&& ./scripts/mysql_install_db

EXPOSE 3306
CMD ["mysqld"]

2.构建mariadb镜像

cd ~/docker
sudo docker build -t cenze/mariadb -f Dockerfile-Mariadb .

3.运行mariadb容器

sudo docker run -d --name mariadb --privileged=true cenze/mariadb

特别说明:此时的MySQL实例只能以 root 从本地访问,可手动配置root密码以及访问权限等。--privileged=true container内的root拥有真正的root权限,容器会被允许直接配置主机的网络堆栈;否则,container内的root只是外部的一个普通用户权限。
 

四.构建php镜像并运行php-fpm容器

1.编辑Dockerfile-PHP-FPM

FROM ubuntu
MAINTAINER cenze <272666745@qq.com>

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ADD conf/sources.list /etc/apt/
RUN apt-get update \
&& apt-get install -y gcc make vim autoconf libssl-dev libpcre3-dev zlib1g-dev libxml2-dev libcurl4-gnutls-dev libpng16-dev libmcrypt-dev \
&& ln -s /usr/lib/x86_64-linux-gnu/libssl.so  /usr/lib/

ENV PKGS="/usr/local/pkgs"
ADD packages/php-7.1.0.tar.gz $PKGS/

#install php
WORKDIR $PKGS/php-7.1.0
ENV PREFIX_PHP="/usr/local/php"
RUN mkdir $PREFIX_PHP \
&& CONFIG_PHP="\
--prefix=$PREFIX_PHP \
#默认为$PREFIX_PHP/lib,php-fpm启动时将在会自行搜索--sysconfdir[=$PREFIX_PHP/etc]指定目录下的php.ini,
#但php以cli模式独立运行时只会在--with-config-file-path[=$PREFIX_PHP/lib]指定目录下搜索php.ini
--with-config-file-path=$PREFIX_PHP/etc \
--disable-cgi \
--enable-fpm \
--with-fpm-user=www-data \
--with-fpm-group=www-data \
--enable-mbstring \
--with-mysqli \
--with-pdo-mysql \
--with-mcrypt \
--with-zlib \
--with-curl \
--with-openssl \
--with-j
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇ASP.NET Zero--3.菜单配置 下一篇容器化实践金融业案例一

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目