07.dockerfile
[toc]{type: “ol”, level: [3,4,5]}
概念
文件中存放了指令集,通过该文件可以生成镜像
常用指令
定义基础镜像
- FROM image_name:tag
定义了使用哪个基础镜像启动构建流程
声明镜像创建者
- MAINTAINER user_name
设置环境变量
- ENV key value
核心指令
- RUN command
Dockerfile的核心指令(可以写多条)
添加文件
- ADD source_dir/file dest_dir/file
将宿主机的文件复制到容器内
如果是一个压缩文件,将会在复制后自动解压
复制文件
- COPY source_dir/file dest_dir/file
和ADD相似,但是如果有压缩文件并不能解压
设置工作目录
- WORKDIR path_dir
创建并启动
进入root/idjango
创建requirements.txt
创建dockerfile
文件名字必须叫Dockerfile
vim Dockerfile
FROM python:3.6
MAINTAINER ideas
EXPOSE 8080
ADD ./requirements.txt /home/
RUN pip install -r /home/requirements.txt -i https://pypi.douban.com/simple/
RUN pip install uwsgi -i https://pypi.douban.com/simple/
VOLUME ["/home"]
WORKDIR /home/idjango
CMD ["python", "/home/idjango/manage.py", "runserver", "0.0.0.0:8080"]
CMD [“uwsgi”, “–ini”, “/home/idjango/uwsgi.ini”]
构建镜像
docker build -t='django_3.2.7' .
通过当前目录下的Dockerfile文件,构建镜像
启动容器
docker run -di --name=django_3.2.7 -v /root:/home -p 8181:8080 django_3.2.7
配置nginx转发
创建文件件
mkdir -p /root/nginx/conf /root/nginx/html /root/nginx/logs
新建配置文件
cd /root/nginx/conf
vim nginx.conf
写入内容
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream node {
server 121.41.6.253:8081;
server 121.41.6.253:8082;
server 121.41.6.253:8083;
}
server {
# 监听docker容器的80端口
listen 80;
server_name localhost;
location / {
# 以http启动时,配置如下:
# proxy_pass http://121.41.6.253:8081;
# 负载均衡配置
proxy_pass http://node;
}
}
}
运行nginx
docker run --name nginx_projact -id -p 8282:80 -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/html:/etc/nginx/html -v /root/nginx/logs:/var/log/nginx nginx