一、寫在前面
我們用 docker 喜歡用它的便利性,但是有的能夠滿足我們的要求。有的不能滿足,所以我基於 ubuntu16.04 將一些我功能打包成了一個 docker 映象。該映象包含 php7.1
composer
npm
cnpm
nodejs
supervisor
nginx
yarn
python3
caddy
其中也包含php的擴充套件 mongo
,redis
等共計,也包含一些常用的 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