首页>>互联网>>DevOps->docker自动部署(docker 自启动)

docker自动部署(docker 自启动)

时间:2023-12-11 本站 点击:0

gitLab CI/CD docker自动部署vue前端项目

查询了好多资料,都没有找到可以直接应用的,综合了好多,配置runner之后,前端项目里面需要在项目根目录配置三个文件:

1..gitlab-ci.yml 文件

stages:

- build

- deploy

# 设置缓存

cache:

paths:

- node_modules/

- dist/

# 安装依赖 before_script 会在每个 stages 执行之前运行

before_script:

- npm install

# 编译 这里对应上方 stages ,

build:

stage: build

script:# script 为要执行的命令,可以多条按顺序执行

    - npm run build:prod

docker-deploy:

stage: deploy

# 执行Job内容

  script:

# 通过Dockerfile生成pactera_pflife_ui镜像

    - sudo docker build -t pactera_pflife_ui .

# 删除已经在运行的容器

    - if [ $(docker ps -aq --filter name= pactera_pflife_ui) ]; then sudo docker rm -f pactera_pflife_ui;fi

# 通过镜像启动容器

    - sudo docker run -d -p 8085:80 --name pactera_pflife_ui pactera_pflife_ui

tags:

# 执行Job的服务器

    - pflife-web

only:

# 只有在master分支才会执行

    - dev_xht

2.Dockerfile 文件

# 设置基础镜像

FROM nginx:latest

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

COPY dist/ /usr/share/nginx/html

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

COPY default.conf/etc/nginx/conf.d/default.conf

EXPOSE 80

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

3.default.conf文件

server {

listen      80;

server_name  39.100.9.6; # localhost修改为docker服务宿主机的ip

location / {

root  /usr/share/nginx/html;

index  index.html index.htm;

try_files $uri $uri/ /index.html =404;

}

location /api/{

proxy_set_header Host $http_host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header REMOTE-HOST $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_pass ;

}

error_page  500 502 503 504  /50x.html;

    location = /50x.html {

root  html;

}

}

总之,三个文件部署之后运行正常

阿里云 云效Devops流水线Flow自动化部署Docker项目

Dockerfile

1、新建流水线

2、选择模板

4、选择阿里云容器镜像服务仓库构建镜像

5、添加新任务选择Docker部署

6、选择主机

7、部署脚本

8、保存并运行发布

9、回滚操作

如何使用docker部署web应用

步骤一 - 创建Dockerfile

如下的Dockerfile可以满足以上的要求:

**FROM** golang:1.6

*# Install beego and the bee dev tool*

**RUN** go get github.com/astaxie/beego go get github.com/beego/bee

*# Expose the application on port 8080*

**EXPOSE** 8080

*# Set the entry point of the container to the bee command that runs the*

*# application and watches for changes*

**CMD** ["bee", "run"]

第一行,

FROM golang:1.6

将Go的官方映像文件作为基础映像。该映像文件预安装了 Go 1.6 . 该映像已经把 $GOPATH 的值设置到了 /go 。所有安装在 /go/src 中的包将能够被go命令访问。

第二行,

RUN go get github.com/astaxie/beego go get github.com/beego/bee

安装 beego 包和 bee 工具。 beego 包将在应用程序中使用。 bee 工具用语在开发中再现地重新加载咱们的代码。

第三行,

EXPOSE 8080

在开发主机上利用容器为应用程序开放8080端口。

最后一行,

CMD ["bee", "run"]

使用bee命令启动应用程序的在线重新加载。

步骤二 - 构建image

一旦创建了Docker file,运行如下的命令来创建image:

docker build -t ma-image .

执行以上的命令将创建名为ma-image的image。该image现在可以用于使用该应用程序的任何人。这将确保这个团队能够使用一个统一的开发环境。

为了查看自己的系统上的image列表,运行如下的命令:

docker images

这行该命令将输出与以下类似的内容:

REPOSITORY TAG IMAGE ID CREATED SIZE

ma-image latest 8d53aa0dd0cb 31 seconds ago 784.7 MB

golang 1.6 22a6ecf1f7cc 5 days ago 743.9 MB

注意image的确切名字和编号可能不同,但是,应该至少看到列表中有 golang 和 ma-image image。

步骤三 - 运行容器

一旦 ma-image 已经完成,可以使用以下的命令启动一个容器:

docker run -it --rm --name ma-instance -p 8080:8080 \

-v /app/MathApp:/go/src/MathApp -w /go/src/MathApp ma-image

让咱们分析一下上面的命令来看看它做了什么。

。docker run命令用于从一个image上启动一个容器

。-it 标签以交互的方式启动容器

。--rm 标签在容器关闭后将会将其清除

。--name ma-instance 将容器命名为ma-instance

。-p 8080:8080 标签允许通过8080端口访问该容器

。-v /app/MathApp:/go/src/MathApp更复杂一些。它将主机的/app/MathApp映射到容器中的/go/src/MathApp。这将使得开发文件在容器的内部和外部都可以访问。

。ma-image 部分声明了用于容器的image。

执行以上的命令将启动Docker容器。该容器为自己的应用程序开发了8080端口。无论何时做了变更,它都将自动地重构自己的应用程序。自己将在console(控制台)上看到以下的输出:

bee :1.4.1

beego :1.6.1

Go :go version go1.6 linux/amd64

2016/04/10 13:04:15 [INFO] Uses 'MathApp' as 'appname'

2016/04/10 13:04:15 [INFO] Initializing watcher...

2016/04/10 13:04:15 [TRAC] Directory(/go/src/MathApp)

2016/04/10 13:04:15 [INFO] Start building...

2016/04/10 13:04:18 [SUCC] Build was successful

2016/04/10 13:04:18 [INFO] Restarting MathApp ...

2016/04/10 13:04:18 [INFO] ./MathApp is running...

2016/04/10 13:04:18 [asm_amd64.s:1998][I] http server Running on :8080

如何使用Ansible自动化部署Docker镜像

安装Docker借助apt-get命令,安装Docker是件轻而易举的事。$sudoapt-getinstalldocker.io为了允许非根用户也可以运行Docker,将你自己添加到docker群组。下面这个命令会允许当前用户运行Docker,无需根用户权限。

容器化部署和传统部署区别

容器化部署与传统部署的区别如下:

以Docker为例子,Docker是能够把应用程序自动部署到容器的开源引擎。

传统的部署模式是:安装(包管理工具或者源码包编译)-配置-运行;

Docker的部署模式是:复制-运行。实现更轻量级的,方便快速部署,对于部署来说可以极大地减少部署的时间成本和人力成本。

容器化部署的优势

1、交付物标准化

Docker是软件工程领域的“标准化”交付组件,最恰到好处的类比是“集装箱”。

传统的软件交付物包括:应用程序、依赖软件安装包、配置说明文档、安装文档、上线文档等非标准化组件。Docker的标准化交付物称为“镜像”,它包含了应用程序及其所依赖的运行环境,大大简化了应用交付的模式。

2、一次构建,多次交付

类似于集装箱的“一次装箱,多次运输”,Docker镜像可以做到“一次构建,多次交付”。当涉及到应用程序多副本部署或者应用程序迁移时,更能体现Docker的价值。一次创建和配置之后,可以在任意地方运行。测试人员可以将容器与持续集成系统结合,在pipeline中自动化的完成集成测试,同时运维人员可以通过持续部署系统对应用自动完成部署。

3、应用隔离

集装箱可以有效做到货物之间的隔离,使化学物品和食品可以堆砌在一起运输。Docker可以隔离不同应用程序之间的相互影响,但是比虚拟机开销更小。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/DevOps/23356.html