本篇将使用 DaoCloud 源在 Ubuntu 上简单快速安装 docker 及 docker-compose 并添加了经过 Dockerfile 及 docker-compose.yml 使用 nginx 的示例 本篇文章所用系统信息以下html
Distributor ID: Ubuntu Description: Ubuntu 16.04.1 LTS Release: 16.04 Codename: xenial
docker 是一个开源的软件部署解决方案
docker 也是轻量级的应用容器框架
docker 能够打包、发布、运行任何的应用vue
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
curl -sSL https://get.daocloud.io/docker | sh
安装后将会自动重启nginx
sudo apt-get remove docker docker-engine rm -fr /var/lib/docker/
下面是个人配置,实际使用须要根据本身的帐号去查看本身的地址git
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://ced808ab.m.daocloud.io sudo systemctl restart docker.service
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://dist7hw1.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
docker -v
//文章使用版本:Docker version 18.06.0-ce, build 0ffa825docker images
docker ps
sudo service docker start
sudo service docker stop
sudo service docker restart
docker exec -it 容器Id /bin/bash
经过下面的一个脚本能够简单快速的建立一个镜像并运行起来 大概看下应该就能够大概明白镜像的基本使用了github
echo '0.建立测试目录及代码' mkdir dockerfiletest cd dockerfiletest mkdir dist echo 'hello world'>./dist/index.html echo '1.建立Dockerfile' echo ' From daocloud.io/library/nginx:1.13.0-alpine COPY dist/ /usr/share/nginx/html/ '>./Dockerfile echo '2.构建镜像' docker build -t dockerfiletest . echo '3.运行镜像' docker run -p 3344:80 dockerfiletest
下面分步拆解下web
详细请参考:https://hub.daocloud.io/repos/2b7310fb-1a50-48f2-9586-44622a2d1771docker
html 的简单部署shell
From daocloud.io/library/nginx:1.13.0-alpine # 将发布目录的文件拷贝到镜像中 COPY dist/ /usr/share/nginx/html/
若要使用本身的配置脚本,好比 vue 的配置,能够将本身的配置文件复制到容器中json
From daocloud.io/library/nginx:1.13.0-alpine # 删除镜像中 nginx 的默认配置 RUN rm /etc/nginx/conf.d/default.conf # 复制 default.conf 到镜像中 ADD default.conf /etc/nginx/conf.d/ # 将发布目录的文件拷贝到镜像中 COPY dist/ /usr/share/nginx/html/
nginx 中 vue history 模式的配置 以下,可参考ubuntu
server { listen 80; location / { root /usr/share/nginx/html/; index index.html; try_files $uri $uri/ /index.html; } }
如果将/usr/share/nginx/html/
和/etc/nginx/conf.d/
挂载到本地,这样应该可以灵活使用 docker 安装的 nginx 了(未实践过)
构建参数说明参考:http://www.runoob.com/docker/docker-build-command.html
docker build -t docker-nginx-test .
--name 服务名 -d 后台运行 -p 暴露端口:nginx 端口 docker-nginx-test 镜像名/IMAGE ID
docker run --name dockertest -d -p 4455:80 docker-nginx-test
root@ubuntu:~# curl http://localhost:4455 hello world
如今,能够经过 IP+端口的形式在外网访问站点了,但在实际使用确定还须要绑定域名等一些操做
最简单的是我认为是使用 nginx 去作代理
目前咱们公司使用的 traefik ,最爽的莫过于 https 的支持,能够了解一下
Docker Compose 是一个用来定义和运行复杂应用的 Docker 工具。 使用 Docker Compose 再也不须要使用 shell 脚原本启动容器。(经过 docker-compose.yml 配置)
能够经过修改 URL 中的版本,自定义您须要的版本。
sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
sudo rm /usr/local/bin/docker-compose
须要在 docker-compose.yml 所在文件夹中执行命令
使用 docker-compose 部署项目的简单步骤
docker-compose down
docker-compose pull
docker-compose up -d
我将上面所建立的镜像推送到了阿里云,在此使用它
经过如下配置,在运行后能够建立两个站点(只为演示)
version: "3" services: web1: image: registry.cn-hangzhou.aliyuncs.com/yimo_public/docker-nginx-test:latest ports: - "4466:80" web2: image: registry.cn-hangzhou.aliyuncs.com/yimo_public/docker-nginx-test:latest ports: - "4477:80"
此处只是简单演示写法,说明 docker-compose 的方便
docker-compose up -d
运行后就可使用 ip+port 访问这两个站点了
docker-compose down docker-compose pull docker-compose up -d