配置dockerfile文件和defalutl.conf
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都可以做到