今天来讲Vue前端的与postgres包入进docker,和後端编译後直接放入相比,前端多了一个转dist的过程,也就是npm build
,Vue的prodcution步骤详细如下:
npm build
build成一个dist档因此dockerfile需要两个环境,步骤2需要node环境,而步骤3则需要webserver环境,有什麽办法能够堆叠这两个环境呢?有的,就是multi-stage builds
在multi-stage build中,每一个FROM都是一个基础的base,并且每一个都会是一个新的stage互不干扰,你可以透过COPY的方式将上个stage的产出结果COPY到下个stage,如以下范例,我们需要产出两个stage分别是node与web server:
FROM node:latest as build-stage
WORKDIR /usr/src/app
COPY . .
RUN npm install && npm run build
FROM httpd:2.4 as production-stage
COPY --from=build-stage /usr/src/app/dist /usr/local/apache2/htdocs/
EXPOSE 80
CMD ["httpd-foreground"]
如上build-stage会build档案,然後produciton-stage会将build-stage的结果copy过来,build-stage会自动删除,节省最终image大小
docker build -t myweb:latest .
docker run -d -p 8085:80 --name run_myweb --network itban_network myweb:latest
成功执行:
资料库的部分其实更常是跟着docker-compose一起使用,但是我这里来讲一下单独建立与进入postgres的方法,postgres资料库有许多重要参数:
建立:
docker volume create pgdata
docker run -d --name my_postgres --network itban_network -e POSTGRES_PASSWORD=password -e PGDATA=/var/lib/postgresql/data/pgdata -v pdata:/var/lib/postgresql/data -p 5432:5432 postgres
Postgres docker可以设定许多参数,详细可以参考这里,其中POSTGRES_PASSWORD
是必填的,此外资料库内容会保存在/var/lib/postgresql/data
中,默认对外开启5432 port。
进入:
docker exec -it -u postgres my_postgres bash
-u指定自己的身分为postgres进入my_postgres,接着执行psql就能开始使用了
psql
成功进入:
参照Gihub,我帮你把环境变数写好了,最终可以得到:
Table是从资料库里面捞出来的。
<<: [2021铁人赛 Day-01] 前言 and 嵌入式系统简介
在软件开发生命周期(SDLC)的设计阶段(建筑和详细设计)完成後,我们必须进行审查。威胁建模是设计审...
前面讲了 C# 的中特殊字符,这篇就来讲讲 C# 中的字符串转义吧。详细的转义序列表,可以查看微软官...
当我们已经开始使用防火墙规则管理连出入的网路传输时,随着制订规则数目越来越多,在管理上就会遇到开始...
本篇章主要是先从技术层面来解释 URI 与 URL 及比较少使用到却与生活息息相关的 URN,让读者...
终於来到我们第三十天,在最後的第三十天,我想说几句完赛感言! 其实无法想像我居然有这个毅力可以撑过一...