Docker自動化部署實戰

簡述

初創公司,最簡單高效的前段自動化部署方案,分享給大家.跟著我一步步操作有問題評論區提問

準備

  • 一臺Centos7至少內存為4G的機器。

安裝Docker

<code>

curl

-sSL https://get.docker.com/ | sh /<code>

安裝Gitlab

<code>sudo yum 

install

-y git vim gcc glibc-

static

telnet sudo yum

install

-y curl policycoreutils-python openssh-

server

sudo systemctl

enable

sshd sudo systemctl

start

sshd sudo yum

install

postfix sudo systemctl

enable

postfix sudo systemctl

start

postfix /<code>
  • 新建 /etc/yum.repos.d/gitlab-ce.repo 文件
<code>

[gitlab-ce]

name

=Gitlab CE Repository

baseurl

=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el

$releasever

/

gpgcheck

=

0

enabled

=

1

/<code>

開始安裝

<code>

sudo

EXTERNAL_URL=

"http://www.syappmp.com"

yum install -y gitlab-ce sudo gitlab-ctl reconfigure /<code>

域名設置一個內網可以訪問到這臺機器IP的域名訪問
http://www.yunliantaida.com 可以看到你安裝的gitlab設置好用戶名密碼

安裝gitlab ci runner

<code>

curl

-L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash

sudo

yum install gitlab-ci-multi-runner -y

sudo

usermod -aG docker gitlab-runner

sudo

service docker restart

sudo

gitlab-ci-multi-runner status

/<code>

返回 gitlab-runner: Service is running! 標示安裝成功

GitLab CI設置

  • 關注我待更新

創建NuxtJS

  • 開發機安裝好NodeJS, Yarn具體安裝百度有很多
  • 直接場景Nuxt項目
<code>

yarn

create nuxt-app yunliantaida

cd

yunliantaida

npm

run dev

/<code>

應用現在運行在 http://localhost:3000 上運行。

編寫DockerFile

  • nutx項目目錄下新建Dockerfile
<code>

FROM

node:10.16.3-alpine

ENV

NODE_ENV=production

ENV

HOST 0.0.0.0

RUN

mkdir -p /nuxt

COPY

.nuxt/ /nuxt/.nuxt

COPY

static/ /nuxt/static

COPY

nuxt.config.js /nuxt/

COPY

package.json /nuxt/

WORKDIR

/nuxt

EXPOSE

3000

RUN

ls

RUN

npm config set registry https://registry.npm.taobao.org

RUN

npm install

CMD

["npm", "start"]

/<code>

編寫DockerRun腳本

  • nutx項目目錄下新建dockerrun.sh
<code> 
IMAGE_NAME=nginx/www.syappmp.com
APP_NAME=www.syappmp.com
APP_VERSION=1.0
 

is_exist

() { pid=$(docker ps -a --filter name=

${APP_NAME}

| awk

'{if (NR>1){print $1}}'

)

if

[ -z

"

${pid}

" ];

then

return

1

else

return

0

fi

}

is_images_exist

() { pidDockerImages=$(docker images | grep

''

| awk

'{print $3}'

)

if

[ -z

"

${pidDockerImages}

" ];

then

return

1

else

return

0

fi

} is_images_exist

if

[ $? -eq

"0"

];

then

docker rmi

${pidDockerImages}

fi

is_exist

if

[ $? -eq

"0"

];

then

echo

">>> Dcoker is already running PID=

${pid}

<< docker stop

${pid}

docker rm

${pid}

fi

docker run --name

${APP_NAME}

-d -p 8020:80

${IMAGE_NAME}

&

echo

">>> start

${APP_NAME}

:

${APP_VERSION}

running successed PID=$! << /<code>
  • nutx項目目錄下新建 .gitlab-ci.yml (注意前面的.要複製)
<code>

stages

:

build

deploy

build

:

stage

:

build

tags

:

test

script

:

npm install

npm run build

docker build -t nginx/www.syappmp.com .

run

:

stage

:

deploy

tags

:

test

script

:

sh dockerrun.sh

/<code>
  • 將Nutx項目上傳到GitLab上,每次提交推送git push會自動化打包編譯部署運行Docker容器
  • 訪問 http://內網服務IP:8020
  • 如果有同學GitLab不會用可以百度一下


分享到:


相關文章: