一个基于 Ubuntu16.04 的多功能镜像

一、写在前面

我们用 docker 喜欢用它的便利性,但是有的能够满足我们的要求。有的不能满足,所以我基于 ubuntu16.04 将一些我功能打包成了一个 docker 镜像。该镜像包含 php7.1 composer npm cnpm nodejs supervisor nginx yarn python3 caddy 其中也包含php的扩展 mongoredis 等共计,也包含一些常用的 lib 库。

思路

首先,需要有一个基础镜像也就是所谓的 base image 它基于 ubuntu16.04。并且里面集成了一些常用的 lib 库,接着在这个 base image 上面我们安装一些我们需要的工具。

二、基础镜像

以下是 dockerfile

FROM       ubuntu:16.04
MAINTAINER siya Lai <siya891202@gmail.com> <13661189714@163.com>

ENV DEBIAN_FRONTEND=noninteractive
RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list

RUN apt-get update
RUN apt-get install -y apt-utils
RUN apt-get install -y software-properties-common python-software-properties && LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php && \
    apt-get install -y apt-transport-https zip mcrypt && \
    apt-get install -y libpq-dev libfreetype6-dev libpng12-dev libmcrypt-dev && \
    apt-get install -y libcurl4-openssl-dev pkg-config libssl-dev openssh-server vim libncurses5-dev && \
    apt-get install -y ncurses-dev libreadline6-dev lua5.1-0-dev ruby ruby-dev python-dev libyaml-cpp-dev zlib1g.dev && \
    apt-get install -y curl tzdata && \
    apt-get install -y language-pack-zh-hant-base language-pack-zh-hans-base
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'root:root' |chpasswd

RUN sed -ri 's/^#?PermitRootLogin\s+.*/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config

RUN echo "set fileencodings=utf-8,gb2312,gb18030,gbk,ucs-bom,cp936,latin1" >> ~/.vimrc && \
    echo "set termencoding=utf-8" >> ~/.vimrc && \
    echo "set fileformats=unix" >> ~/.vimrc && \
    echo "set encoding=prc" >> ~/.vimrc

RUN echo "alias vi=vim" >> ~/.bashrc
RUN mkdir -p ~/.vim/bundle/vim-go ~/.vim/bundle/Vundle.vim
ADD vim-go /root/.vim/bundle/vim-go
ADD Vundle.vim /root/.vim/bundle/Vundle.vim
WORKDIR /data
ADD Dockerfile /data
RUN mkdir -p /var/run/sshd

RUN apt-get clean && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

EXPOSE 22

这个 dockerfile,基于 ubuntu16.04 安装了一些lib库和常用的工具比如 sshd,也将ubuntu的源替换成阿里的镜像源。
将基础镜像打包成一个镜像并上传至 dockerhub。
docker image name 是 siya/ubuntu16.04-vim-ssh

三、基于基础镜像安装工具

基于以上 siya/ubuntu16.04-vim-ssh,在进行构建。

FROM siya/ubuntu16.04-vim-ssh
MAINTAINER siya Lai <siya891202@gmail.com> <13661189714@163.com>

ADD Dockerfile /data
RUN apt-get update
RUN apt-get install -y nginx git cron supervisor
RUN apt-get install -y php7.1 php7.1-common php7.1-fpm php7.1-dev && \
    apt-get install -y php7.1-mbstring php7.1-xml php7.1-gd php7.1-exif php7.1-zip php7.1-iconv php7.1-mcrypt  && \
    apt-get install -y php-redis php-mongodb php7.1-pgsql php7.1-mysql && \
    apt-get install -y librabbitmq-dev && \
    apt-get install -y php-amqp && \
    rm -rf /tmp/* && \
    rm -rf /var/lib/apt/lists/*
RUN curl -sL https://deb.nodesource.com/setup_8.x | bash - && \
    curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
    echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
    apt-get update && \
    apt-get install -y nodejs && \
    apt-get install -y yarn && \
    npm install -g cnpm --registry=https://registry.npm.taobao.org && \
    php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');" && \
    php composer-setup.php && \
    php -r "unlink('composer-setup.php');" && \
    mv composer.phar /bin/composer && \
    composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ && \
    composer global require "fxp/composer-asset-plugin:^1.3.1" -vvv && \
    ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && \
    rm -rf /tmp/* && \
    rm -rf /var/lib/apt/lists/*

RUN wget -qO- https://getcaddy.com | bash -s personal

RUN mkdir -p /data/src && cd /data/src && \
    wget https://dl.google.com/go/go1.12.6.linux-amd64.tar.gz && tar -zxvf go1.12.6.linux-amd64.tar.gz

RUN ln -f /data/src/go/bin/go /usr/local/bin/go && ln -f /data/src/go/bin/gofmt /usr/local/bin/gofmt && ln -f /data/src/go/bin/godoc /usr/local/bin/godoc && \
    export GOROOT=/data/src/go && export GOPATH=/data/src/ && echo "PATH=\$PATH:/usr/local/bin" >> /root/.bashrc && echo "PATH=\$PATH:\$GOROOT/bin" >> /root/.bashrc

RUN echo "php version \c" && php -v && \
    echo "nginx version \c" && nginx -v && \
    echo "supervisor version \c" && /usr/bin/supervisord -v && \
    echo "nodejs version \c" && nodejs -v && \
    echo "npm version \c" && npm -v && \
    echo "cnpm version \c" && cnpm -v && \
    echo "yarn version \c" && yarn -v && \
    echo "composer version \c" && composer --version && \
    echo "php modules \c" && php -m && \
    echo "caddy version" && caddy -version
ENV TZ=Asia/Shanghai

基于基础镜像,我们安装了一些常用工具。再次打包成一个镜像并上传至dockerhub。
docker image name 为 siya/ubuntu16.04-tool

四、使用

docker run siya/ubuntu16.04-tool 或者 docker pull siya/ubuntu16.04-tool

将该镜像拉到本地即可使用改镜像。挂载目录对外映射端口,依据你自己的要求来做。

dockerhub地址

siya/ubuntu16.04-tool dockerhub
siya/ubuntu16.04-vim-sshl dockerhub

dockerfile地址

siya/ubuntu16.04-tool dockerfile
siya/ubuntu16.04-vim-sshl dockerfile

本作品采用《CC 协议》,转载必须注明作者和本文链接
siya
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!