[Docker] Converting from Docker Compose to Kubernetes
kompose is a tool to help users who are familiar with docker-compose move to Kubernetes. kompose takes a Docker Compose file and translates it into Kubernetes resources.
kompose is a convenience tool to go from local Docker development to managing your application with Kubernetes. Transformation of the Docker Compose format to Kubernetes resources manifest may not be exact, but it helps tremendously when first deploying an application on Kubernetes.
Install:
curl -L https://github.com/kubernetes/kompose/releases/download/v1.18.0/kompose-darwin-amd64 -o kompose chmod +x kompose sudo mv ./kompose /usr/local/bin/kompose
We have a Docker compose file which setup Node, Nginx, Redis, MongoDB.
# 1. Update config values (localhost --> mongo and localhost --> redis) in config/config.development.json if necessary. # 2. Set APP_ENV environment variable by running the following command in your commnand window (see the notes below if on Windows). # export APP_ENV=development or export APP_ENV=production # export DOCKER_ACCT=codewithdan # NOTE: If you're on Windows use one of the following commands to create the environment variables. # Use 'codewithdan' for the account if you want to run in Kubernetes (see the readme). Otherwise, you can substitute your own # Docker account for the value if you'd like. # For the standard Windows DOS command shell use `set` instead of `export` for environment variables. # For Windows Powershell use $env:APP_ENV = "value". # 3. Remove "node" service volume (below) if doing a production build # 4. Run docker-compose build # 5. Run docker-compose up # 6. Live long and prosper version: "3.1" services: nginx: container_name: nginx image: ${DOCKER_ACCT}/nginx build: context: . dockerfile: .docker/nginx.${APP_ENV}.dockerfile # links are deprecated (networks are used instead for communication and # depends_on for upstream node name in nginx config) # links: # - node1:node1 # - node2:node2 # - node3:node3 depends_on: - node ports: - "80:80" - "443:443" networks: - codewithdan-network node: container_name: node-codewithdan image: ${DOCKER_ACCT}/node-codewithdan build: context: . dockerfile: .docker/node-codewithdan.${APP_ENV}.dockerfile ports: - "8080" volumes: - .:/var/www/codewithdan working_dir: /var/www/codewithdan env_file: - ./.docker/env/app.${APP_ENV}.env depends_on: - mongo - redis networks: - codewithdan-network # Removing these for those wanting to run Kubernetes as well (since replica sets would scale pods with containers) # node2: # container_name: node-codewithdan-2 # image: ${DOCKER_ACCT}/node-codewithdan # build: # context: . # dockerfile: .docker/node-codewithdan.${APP_ENV}.dockerfile # ports: # - "8080" # volumes: # - .:/var/www/codewithdan # working_dir: /var/www/codewithdan # env_file: # - ./.docker/env/app.${APP_ENV}.env # depends_on: # - mongo # - redis # networks: # - codewithdan-network # node3: # container_name: node-codewithdan-3 # image: ${DOCKER_ACCT}/node-codewithdan # build: # context: . # dockerfile: .docker/node-codewithdan.${APP_ENV}.dockerfile # ports: # - "8080" # volumes: # - .:/var/www/codewithdan # working_dir: /var/www/codewithdan # env_file: # - ./.docker/env/app.${APP_ENV}.env # depends_on: # - mongo # - redis # networks: # - codewithdan-network mongo: container_name: mongo image: ${DOCKER_ACCT}/mongo build: context: . dockerfile: .docker/mongo.dockerfile ports: - "27017:27017" env_file: - ./.docker/env/mongo.${APP_ENV}.env networks: - codewithdan-network redis: container_name: redis image: ${DOCKER_ACCT}/redis build: context: . dockerfile: .docker/redis.${APP_ENV}.dockerfile ports: - "6379" networks: - codewithdan-network # cadvisor: # container_name: cadvisor # image: google/cadvisor # volumes: # - /:/rootfs:ro # - /var/run:/var/run:rw # - /sys:/sys:ro # - /var/lib/docker/:/var/lib/docker:ro # ports: # - "8080:8080" # networks: # - codewithdan-network networks: codewithdan-network: driver: bridge
Run:
export APP_ENV=development // or export APP_ENV=production export DOCKER_ACCT=codewithdan
Then, we can convert Docker compose file to Kubernetes files:
kompose conver // create multi yml files for each services
// or output only one file
kompose conver --out test.yml
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2018-04-13 [HTML5] Accessible Icon Buttons
2017-04-13 [Angular] Create custom validators for formControl and formGroup
2016-04-13 [Docker] Docker Machine intro
2016-04-13 [Javascript] JavaScript Array Methods in Depth - push
2015-04-13 [AngularJS + Webpack] require directives
2015-04-13 [AngularJS + Webpack] Using Webpack for angularjs