docker 專案部署
我默認你已經安裝了 docker 兒~
先說一下,下面執行可能會遇到的問題,
-
Permission denied
運行shell報錯:Permission denied意思就是沒有權限,
使用命令:chmod 777 ***name***.sh,修改該檔案***name***.sh的權限,然后再執行上面第二步的操作即可, -
bash: vi: command not found這是因為vim沒有安裝,
使用如下命令安裝:
apt-get update
apt-get install vim
附一個docker部署web專案的參考demo
https://github.com/yaodongyi/web-page
配置react,vue,web打包腳本
./build.sh 運行入口,可以在package.json上配置script: { docker_build: “./build.sh” }
#!/usr/bin/env bash
set -e
pwd=$PWD
function buildImage(){
version=`awk '/"version":/{gsub(/"|,/,"",$2);print $2;exit;}' ${pwd}/package.json`
rm -rf dist # 洗掉當前目錄下的dist
rm -rf ${pwd}/docker/dist # 洗掉docker下的dist
npm run build # 重新構建
cp -r ${pwd}/dist ${pwd}/docker/dist # copy到docker
dockerImage=web-page-$1:${version} # 鏡像名稱 注意:web-page對應package.json的name,
docker build ${pwd}/docker/ -t ${dockerImage} --build-arg DIST_DIR=/dist # 構建鏡像,指定DIST_DIR變數
}
cnpm install
buildImage webpage
docker-compose -f docker-compose.yml up -d # 運行compose
./docker-compose.yml
version: '3.1'
services:
webpage:
image: web-page-webpage
restart: always
ports:
- 1234:80 # 埠映射
配置Dockerfile ./docker/Dockerfile
FROM nginx # 構建nginx基礎鏡像
ARG DIST_DIR
COPY ${DIST_DIR} /usr/share/nginx/html # 復制DIST_DIR目錄到docker內的/usr/share/nginx/html
然后運行 ./build.sh 即可打包生成docker鏡像,
以上適用于react,vue,web專案,
可以通過docker ps查看是否已經運行起來了,

node專案部署
./Dockerfile
FROM node:alpine # 構建node基礎鏡像
ARG DIST_DIR
COPY . /usr/share/nginx/html # 將當前目錄內容 復制到docker中的/usr/share/nginx/html
./build.sh
#!/usr/bin/env bash
set -e
pwd=$PWD
function buildImage(){
version=`awk '/"version":/{gsub(/"|,/,"",$2);print $2;exit;}' ${pwd}/package.json`
npm run build # 重新構建一下
dockerImage=with-typescript-$1:${version} # ${version}為package.json的版本號
docker build ${pwd} -t ${dockerImage} --build-arg DIST_DIR=/ # docker build 構建鏡像
}
cnpm install # 每次打包前重新拉一下npm i 避免更新npm包沒拉到
buildImage next_app
docker-compose -f docker-compose.yml up -d # 運行docker-componse
./docker-compose.yml
version: '2'
services:
next_app:
image: with-typescript-next_app
# build: .
working_dir: /usr/share/nginx/html # 啟動的作業目錄
volumes:
- .:/usr/share/nginx/html
# - ./node_modules:/usr/share/nginx/html/node_modules # 如果是使用掛載node_modules 可以打開此行代碼
ports:
- '8080:8080'
command: 'npm start'
restart: always
然后運行 ./build.sh 即可打包生成docker鏡像,
以上適用于next/nuxt/自己搭建的node專案,
docker 命令
對于docker命令做一下常用的收集,
進入容器:
docker exec -it 容器ID /bin/bash
退出容器
exit
查看容器/鏡像
docker ps # 查看正在運行的容器
docker ps -a # 查看所有容器
docker image # 查看鏡像

啟動容器
docker start <CONTAINER ID|NAME>
docker start $(docker ps -a | awk '{ print $1}' | tail -n +2) # 啟動所有的容器
關閉容器
docker stop <CONTAINER ID|NAME>
docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2) # 關閉所有的容器
洗掉容器
docker rm <CONTAINER ID|NAME> <CONTAINER ID|NAME>
docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2) # 洗掉所有的容器
洗掉鏡像
docker rmi <REPOSITORY|IMAGE ID> <REPOSITORY|IMAGE ID>
docker rmi $(docker images | awk '{print $3}' |tail -n +2) # 洗掉所有的鏡像
清理長期未使用鏡像
docker image prune
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/247701.html
標籤:區塊鏈
上一篇:realmev15和realmev5的區別 哪個更值得入手
下一篇:外網訪問內網Redis資料庫
