скажи это прямо
Я искал множество руководств по развертыванию проектов vue с помощью docker в Интернете, и многие из этих статей посвящены сначала выполнению проекта vue.npm run build
Упакуйте его локально, перенесите на свой склад, а затем перейдите на сервер, чтобы получить наш код и получитьdist
файл, а затем смонтируйте файл в контейнер docr. На самом деле, эта операция должна быть ошибочной, мы также должны поместить операцию упаковки в образ докера, чтобы она работала.
Шаги развертывания
Создайте новый в корневом каталоге проектаDockerfile
документ:
# resum Dockerfile
#指定node镜像对项目进行依赖安装和打包
FROM node:10.16.0 AS builder
# 将容器的工作目录设置为/app(当前目录,如果/app不存在,WORKDIR会创建/app文件夹)
WORKDIR /app
COPY package.json /app/
RUN npm config set registry "https://registry.npm.taobao.org/" \
&& npm install
COPY . /app
RUN npm run build
#指定nginx配置项目,--from=builder 指的是从上一次 build 的结果中提取了编译结果(FROM node:alpine as builder),即是把刚刚打包生成的dist放进nginx中
FROM nginx
COPY --from=builder app/dist /usr/share/nginx/html/
COPY --from=builder app/nginx.conf /etc/nginx/nginx.conf
#暴露容器80端口
EXPOSE 80
Как видите, здесь я также поставил операцию упаковки вDokcerfile
действовать внутри.
COPY --from=builder app/dist /usr/share/nginx/html/
Эта команда генерируется путем упаковки нас в образdist
файл в контейнереnginx
ниже веб-каталога.
COPY --from=builder app/nginx.conf /etc/nginx/
Эта команда должна поместить следующее в каталог нашего проекта.nginx.conf
Скопируйте файл в контейнерnginx
Каталог файла конфигурации ниже, тем самым перезаписывая исходный файл конфигурации.
nginx.conf
:
#user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
#gzip on;
gzip on;
gzip_min_length 5k;
gzip_buffers 4 16k;
#gzip_http_version 1.0;
gzip_comp_level 3;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
gzip_vary on;
# 设置简历项目
server {
listen 80;
server_name www.xieyezi.com;
location / {
root /usr/share/nginx/html; #站点目录
index index.html index.htm; #添加属性。
}
location = /50x.html {
root /usr/share/nginx/html;
}
}
}
Введите свой собственный сервер (мой сервер Ubuntu 18.04) и создайте файл в корневом каталоге.web
содержание. Затем войдите в этот каталог и используйте git, чтобы вытащить код нашего проекта в этот каталог.
- клонируйте свой собственный проект:
git clone xxxx
; - В корневом каталоге проекта создайте новый текстовый файл:
.dockerignore
:
.git
node_modules
npm-debug.log
Этот файл исключит файлы по трем указанным выше путям и скажет докеру не упаковывать эти три в файл образа.
3. Сделайте зеркало
docker image build -t [imageName]:1.0 .
После создания образа мы можем запустить его для контейнера:
docker run -p 8080:80 -d --name [containerName] [iamgeName]
Затем введите в консолиdocker ps
Команда для просмотра информации о контейнере, которую мы только что запустили.
Затем введите доменное имя для тестирования, и оно работает нормально.