docker-vue3
This commit is contained in:
parent
82f6002650
commit
a5e16bab7e
18
build
Executable file
18
build
Executable file
@ -0,0 +1,18 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 执行 yarn build
|
||||||
|
yarn build
|
||||||
|
|
||||||
|
# 检查执行结果
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "yarn build 失败"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 执行 rm -rf ../dist
|
||||||
|
rm -rf ../dist
|
||||||
|
|
||||||
|
# 执行 mv dist ../
|
||||||
|
mv dist ../
|
||||||
|
|
||||||
|
echo "build 完成"
|
@ -24,7 +24,8 @@ module.exports = {
|
|||||||
nav: [
|
nav: [
|
||||||
{ text: '首页', link: '/' },
|
{ text: '首页', link: '/' },
|
||||||
{ text: 'FreeSWITCH', link: '/freeswitch/' },
|
{ text: 'FreeSWITCH', link: '/freeswitch/' },
|
||||||
{ text: 'PHP', link: '/php/' }
|
{ text: 'PHP', link: '/php/' },
|
||||||
|
{ text: 'Docker', link: '/docker/' }
|
||||||
],
|
],
|
||||||
sidebar: {
|
sidebar: {
|
||||||
'/freeswitch/': [
|
'/freeswitch/': [
|
||||||
@ -58,6 +59,12 @@ module.exports = {
|
|||||||
'openresty',
|
'openresty',
|
||||||
'php82'
|
'php82'
|
||||||
],
|
],
|
||||||
|
'/docker/': [
|
||||||
|
'../',
|
||||||
|
'',
|
||||||
|
'command',
|
||||||
|
'vue'
|
||||||
|
],
|
||||||
'/': [
|
'/': [
|
||||||
'',
|
'',
|
||||||
{
|
{
|
||||||
@ -83,6 +90,15 @@ module.exports = {
|
|||||||
'/php/php82'
|
'/php/php82'
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: 'Docker精选', // 必要的
|
||||||
|
collapsable: false, // 可选的, 默认值是 true,
|
||||||
|
sidebarDepth: 1, // 可选的, 默认值是 1
|
||||||
|
children: [
|
||||||
|
'/docker/command',
|
||||||
|
'/docker/vue'
|
||||||
|
]
|
||||||
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
1
docs/docker/README.md
Normal file
1
docs/docker/README.md
Normal file
@ -0,0 +1 @@
|
|||||||
|
# Docker相关
|
120
docs/docker/vue.md
Normal file
120
docs/docker/vue.md
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
# 制作vue开发的docker镜像(node18.18.2+openresty1.21.4.2)
|
||||||
|
|
||||||
|
## 系统环境
|
||||||
|
|
||||||
|
- docker engine
|
||||||
|
- docker compose
|
||||||
|
|
||||||
|
## 制作过程
|
||||||
|
|
||||||
|
### 拉取node18.18.2镜像
|
||||||
|
|
||||||
|
```sh
|
||||||
|
docker pull node:18-bullseye
|
||||||
|
```
|
||||||
|
|
||||||
|
### 准备openresty源码
|
||||||
|
|
||||||
|
```sh
|
||||||
|
curl -O https://openresty.org/download/openresty-1.21.4.2.tar.gz
|
||||||
|
tar zxvf openresty-1.21.4.2.tar.gz
|
||||||
|
```
|
||||||
|
|
||||||
|
### 启动node容器
|
||||||
|
|
||||||
|
```sh
|
||||||
|
docker run -itd --name=node-resty node:18-bullseye
|
||||||
|
```
|
||||||
|
|
||||||
|
### 容器内环境
|
||||||
|
|
||||||
|
如果宿主系统是deiban11就直接把sources.list复制到容器内,如果不是,就单独制作一个deiban11的sources.list文件复制到容器内
|
||||||
|
|
||||||
|
```sh
|
||||||
|
docker cp /etc/apt/sources.list node-resty:/etc/apt/
|
||||||
|
docker cp openresty-1.21.4.2 node-resty:/
|
||||||
|
docker exec -it node-resty bash
|
||||||
|
```
|
||||||
|
|
||||||
|
在容器内进行下面的操作
|
||||||
|
|
||||||
|
```sh
|
||||||
|
apt update
|
||||||
|
cd openresty-1.21.4.2
|
||||||
|
./configure -j2
|
||||||
|
gmake
|
||||||
|
gmake install
|
||||||
|
ln -sf /usr/local/openresty/bin/openresty /usr/local/bin/nginx
|
||||||
|
cd /
|
||||||
|
mkdir /app/web -p
|
||||||
|
exit
|
||||||
|
```
|
||||||
|
|
||||||
|
### 宿主机操作
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# 创建一个开发目录
|
||||||
|
mkdir web
|
||||||
|
# 把nginx.conf文件复制到宿主
|
||||||
|
docker cp node-resty:/usr/local/openresty/nginx/conf/nginx.conf ./
|
||||||
|
# 把docker-entrypoint.sh复制到宿主
|
||||||
|
docker cp node-resty:/usr/local/bin/docker-entrypoint.sh ./
|
||||||
|
```
|
||||||
|
|
||||||
|
修改docker-entrypoint.sh文件,在`exec "$@"`一句之前加上`nginx`一行。
|
||||||
|
|
||||||
|
```sh
|
||||||
|
docker cp ./docker-entrypoint.sh node-resty:/usr/local/bin/
|
||||||
|
```
|
||||||
|
|
||||||
|
### 生成镜像
|
||||||
|
|
||||||
|
```sh
|
||||||
|
docker commit node-resty node-resty:18.18.2
|
||||||
|
```
|
||||||
|
|
||||||
|
### 提交到docker hub
|
||||||
|
|
||||||
|
```sh
|
||||||
|
docker login --username=<hub.docker.com的用户名>
|
||||||
|
docker tag node-resty:18.18.2 <docker仓库>/node-resty:18.18.2
|
||||||
|
docker push <docker仓库>/node-resty:18.18.2
|
||||||
|
```
|
||||||
|
|
||||||
|
### 使用方法
|
||||||
|
|
||||||
|
假设在某一个vue项目目录下。
|
||||||
|
|
||||||
|
```sh
|
||||||
|
docker pull <docker仓库>/node-resty:18.18.2
|
||||||
|
# npm install
|
||||||
|
docker run -it --rm --name=node-resty -w /app/web -v ./:/app/web <docker仓库>/node-resty:18.18.2 npm install
|
||||||
|
# npm run build
|
||||||
|
docker run -it --name=node-resty -w /app/web -v ./:/app/web -v ./dist:/usr/local/openresty/nginx/html -p 80:80 <docker仓库>/node-resty:18.18.2 npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
可以看到,上面的操作明显太麻烦了。我们可以试着写一个docker-compose.yml文件:
|
||||||
|
|
||||||
|
```yml
|
||||||
|
version: "3.1"
|
||||||
|
|
||||||
|
services:
|
||||||
|
node-resty:
|
||||||
|
image: <docker仓库>/node-resty:18.18.2
|
||||||
|
container_name: node-resty
|
||||||
|
ports:
|
||||||
|
- 80:80
|
||||||
|
restart: always
|
||||||
|
volumes:
|
||||||
|
- ./docker-entrypoint.sh:/usr/local/bin/docker-entrypoint.sh
|
||||||
|
- ./:/app/web
|
||||||
|
- ./nginx.conf:/usr/local/openresty/nginx/conf/nginx.conf
|
||||||
|
- ./dist:/usr/local/openresty/nginx/html
|
||||||
|
working_dir: /app/web
|
||||||
|
stdin_open: true
|
||||||
|
command: ["npm", "run", "build"]
|
||||||
|
```
|
||||||
|
|
||||||
|
还可以通过编写shell脚本的方式解锁更多开发和发布姿势。
|
||||||
|
|
||||||
|
参照<https://git.wandoubaba.com/wandoubaba/docker-vue3>可以把镜像用于实际开发和生产。
|
Loading…
Reference in New Issue
Block a user