使用docker和docker compose构建的工作流是什么?
我已经完成了,docker compose up将启动该项目,创建2个容器(一个DB和API),一切正常 现在我想构建并部署到Kubernetes。我尝试了docker compose build,但它抱怨没有docker文件。所以我开始写一个Dockerfile,然后发现了这一点。有什么好处?我该如何塑造这个形象?有人能告诉我吗使用docker和docker compose构建的工作流是什么?,docker,kubernetes,docker-compose,Docker,Kubernetes,Docker Compose,我已经完成了,docker compose up将启动该项目,创建2个容器(一个DB和API),一切正常 现在我想构建并部署到Kubernetes。我尝试了docker compose build,但它抱怨没有docker文件。所以我开始写一个Dockerfile,然后发现了这一点。有什么好处?我该如何塑造这个形象?有人能告诉我吗 使用适当的环境变量构建docker映像的预期工作流程是什么?这些环境变量不应在docker构建步骤中设置,而应在Kubernetes或docker compose上运
使用适当的环境变量构建docker映像的预期工作流程是什么?这些环境变量不应在docker构建步骤中设置,而应在Kubernetes或docker compose上运行应用程序时设置 因此: 编写Dockerfile并将其放置在根文件夹中。大概是这样的:
FROM node
COPY package.json .
RUN npm install
COPY . .
ENTRYPOINT ["npm", "start"]
image: YOUR-DOCKERHUB-USERNAME/node-rest-auth-arangodb
修改docker-compose.yaml。在图像字段中,必须指定要生成的图像的名称。应该是这样的:
FROM node
COPY package.json .
RUN npm install
COPY . .
ENTRYPOINT ["npm", "start"]
image: YOUR-DOCKERHUB-USERNAME/node-rest-auth-arangodb
无需设置用户
和工作目录
使用docker compose Build
构建映像(也可以使用docker Build进行此操作)
现在,您可以使用docker compose up
在本地运行应用程序,使用.env
文件
要在Kubernetes上部署它,您需要在dockerhub中发布映像(除非您在本地运行Kubernetes):
最后,创建一个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中,我认为这些是从配置映射传入的。这样做可以使图像保持更便携;同一项目可以使用传入的不同变量运行,无需重新生成
感谢您的输入。>>将.example env重命名为.env,此文件为API和docker-compose.Ya设置了env vars,我为项目新手保留了此示例文件。自述文件告诉他们重命名它。我想出了一个像样的解决办法。此外,我认为docker开发人员的意图是在运行时传递env变量,因此--env文件仅可用于
docker运行
,而不可用于docker构建
。我将更新并回答我自己的问题,我正在推动更改。