Dockerfile

指令配置解释

FROM  定义使用哪个基础镜像构建流程

RUN  指令后写一条命令,RUN会将改命令放到linux shell 下执行

CMD 在用镜像构建容器后被调用

ENV 用于设置环境变量

创建Dockerfile文件参考以下内容配置,把文件放在项目目录中

# 设置基础镜像
FROM nginx:stable-alpine as production-stage

# 将dist文件中的内容复制到 /usr/share/nginx/html/ 这个目录下面
COPY  ./dist /usr/share/nginx/html/

#用本地的 default.conf 配置来替换nginx镜像里的默认配置
COPY ./default.conf /etc/nginx/conf.d/default.conf

#80端口
EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]

default.conf

创建default.conf文件参考以下内容配置,把文件放在项目目录中

server {
listen       80;
server_name  localhost;

#charset koi8-r;
access_log  /var/log/nginx/host.access.log  main;
error_log  /var/log/nginx/error.log  error;

location / {
root   /usr/share/nginx/html;
index  index.html index.htm;
}

#error_page  404              /404.html;

# redirect server error pages to the static page /50x.html
#
error_page   500 502 503 504  /50x.html;
location = /50x.html {
root   /usr/share/nginx/html;
}
}

docker命令

创建镜像

docker build -t test . // 后面还有个点,就是全部的意思

本人创建中遇到的问题:如果报错‘connect no route to host’,这个是网络问题,那就把docker的镜像源切换成阿里的,去阿里云申请一个镜像源,然后替换一下就可以了


运行容器

docker run -d --name test-app -p 8081:80 test // -d 使容器以后台的方式运行,-p将宿主机的80端口映射到容器的8081端口,test-app 是自己起的容器的名字,test是自己创建镜像的名字


不出意外的话可以打开网站了

地址:ip:8081

其它相关指令

docker rmi - f  f镜像id  //强制删除镜像
docker images //查看镜像
docker search test //查看test镜像
docker pull test/test:1.1 //下载镜像
docker attach test-app //进入容器
docker ps //列出所有运行的id
docker ps -a -q //列出所有容器的id
docker rm -f 容器id  // 删除运行的容器
docker rm 容器id  // 删除未运行的容器
docker start 容器id  //启动容器
docker restart 容器id  //重启重启
docker stop 容器id  //停止容器
docker tag xxx xxx 改镜像名字
docker push 推送到仓库

根据最新代码自动构建镜像

docker compose , swarm,k8s都可以做到