[英]What is the workflow to build with docker AND docker-compose?
我有这个仓库 , docker-compose up
将启动项目,创建2个容器(一个数据库和API),并且一切正常。
现在,我想构建并部署到Kubernetes。 我尝试docker-compose build
但是它抱怨没有Dockerfile。 因此,我开始编写Dockerfile,然后发现docker / Dockerfile不支持从env_file或.env文件加载ENV var 。 是什么赋予了? 我应该如何建立这个形象? 有人可以启发我吗?
使用适当的环境变量构建docker映像的预期工作流程是什么?
这些环境变量不应在Docker构建步骤设置,而应在Kubernetes或docker-compose上运行应用程序时设置。
所以:
编写一个Dockerfile并将其放置在根文件夹中。 像这样:
FROM node
COPY package.json .
RUN npm install
COPY . .
ENTRYPOINT ["npm", "start"]
修改docker-compose.yaml。 在图像字段中,您必须指定要生成的图像的名称。 应该是这样的:
image: YOUR-DOCKERHUB-USERNAME/node-rest-auth-arangodb
无需设置user
和working_dir
使用docker-compose build
构建映像(您也可以使用docker build来执行此操作)
现在,您可以使用docker-compose up
和.env
文件在本地运行您的应用
要将其部署在Kubernetes上,您需要在dockerhub中发布映像(除非您在本地运行Kubernetes):
docker push YOUR-DOCKERHUB-USERNAME/node-rest-auth-arangodb
最后,创建一个Kubernetes清单。 可悲的是,kubernetes不像docker-compose那样支持env文件,您需要在清单中手动设置以下变量:
apiVersion: apps/v1
kind: Deployment
metadata:
name: platform-api
labels:
app: platform-api
spec:
replicas: 1
selector:
matchLabels:
app: platform-api
template:
metadata:
labels:
app: platform-api
spec:
containers:
- name: platform-api
image: YOUR-DOCKERHUB-USERNAME/node-rest-auth-arangodb
ports:
- containerPort: 8080
env:
- name: NODE_ENV
value: develop
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: platform-db
labels:
app: platform-db
spec:
replicas: 1
selector:
matchLabels:
app: platform-db
template:
metadata:
labels:
app: platform-db
spec:
containers:
- name: arangodb
image: YOUR-DOCKERHUB-USERNAME/node-rest-auth-arangodb
ports:
- containerPort: 8529
env:
- name: ARANGO_ROOT_PASSWORD
value: localhost
使用kubectl create
部署
请注意,此代码仅供参考,我不完全了解您的用例。 在docker-compose和kubernetes文档和教程中找到更多信息。 祝好运!
我已经在github上更新了该项目,它现在可以正常工作,并且自述文件记录了如何运行它。
我意识到,ENV瓦尔被认为是运行时瓦尔,这就是为什么--env-file
是一个选项, docker run
,而不是docker build
。 这也必须(我假设)是为什么docker-compose.yml
具有env_file
选项的原因,我假设只是将文件传递给docker build
。 在Kubernetes中,我认为这些是从configmap传入的。 这样做是为了使图像保持更可移植; 可以使用传入的不同var来运行同一项目,而无需重建。
感谢ignacio-millán的输入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.