有关于构建nginx+django+uwsgi的dockerfile的文章请戳这里,构建完成后的镜像大小为927MB
而构建nginx+django+uwsgi+mysql的镜像大小为1.2GB,而且以后如果存放了数据的话只会更大。所以我更倾向于再建一个容器来装mysql,但是这里也给大家放出来我的dockerfile是怎么编写的
Dockerfile:
FROM centos:7
MAINTAINER huangjinxuan
RUN yum install -y gcc gcc-c++ make vim git \
openssl-devel pcre-devel gd-devel \
iproute net-tools telnet wget curl initscripts psmisc && \
yum clean all && \
rm -rf /var/cache/yum/*
RUN wget http://nginx.org/download/nginx-1.15.5.tar.gz && \
tar zxf nginx-1.15.5.tar.gz && \
cd nginx-1.15.5 && \
./configure --prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_stub_status_module && \
make -j 4 && make install && \
cd / && rm -rf nginx-1.15.5* && \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz && \
tar -xvJf Python-3.6.2.tar.xz && \
cd Python-3.6.2 && \
./configure prefix=/usr/local/python3 && \
make && make install && \
cd .. && rm -rf /Python-3.6.2* && \
rm -rf /usr/bin/python && \
ln -s /usr/local/python3/bin/python3 /usr/bin/python && \
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
RUN set -ex \
&& sed -i "s#/usr/bin/python#/usr/bin/python2.7#" /usr/bin/yum \
&& sed -i "s#/usr/bin/python#/usr/bin/python2.7#" /usr/libexec/urlgrabber-ext-down \
&& yum install -y deltarpm \
&& pip install --upgrade pip
RUN cd /usr/local && \
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm && \
rpm -ivh mysql-community-release-el7-5.noarch.rpm && \
yum -y install mysql-devel mysql-server && \
yum clean all && \
rm -rf /var/cache/yum/*
RUN pip install django==2.0 && \
pip install setuptools && \
pip install supervisor && \
pip install uwsgi && \
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi && \
pip install mysqlclient
RUN mkdir usr/project && \
cd /usr/project && \
ln -s /usr/local/python3/bin/django-admin /usr/bin/django-admin && \
../local/python3/bin/django-admin.py startproject testproject && \
cd testproject && touch uwsgi.ini
ENV PATH $PATH:/usr/local/nginx/sbin
WORKDIR /usr/local/nginx
EXPOSE 80
CMD ["/usr/sbin/init"]
详细的参数解释请看上一篇文章
我们通过docker build -t centos:v7 -f Dockerfile-centos7 . 构建完镜像后可通过docker images查看 我的centos:v6是不带mysql的镜像
然后通过 docker run --privileged=true --name Mycentos4 -p 4306:3306 -p 8081:80 -d centos:v7 来建立自己的容器
注意一定要带上--privileged=true
然后通过docker ps -a查看状态
状态没问题后我们输入 docker exec -it Mycentos4 /bin/bash 进入到容器中
输入mysql,发现就能使用mysql的命令了
注意此时我们的nginx是没有打开的,因为我们编写的dockerfile中最后一行CMD并没有加上nginx
因此我们要手动开启nginx
如果想要实现通过挂载数据卷实现配置本地化、数据本地化的,戳这里