![](/img/trans.png)
[英]Code works in Dockerfile but not in docker-compose.yml
[英]how does docker-compose.yml and dockerfile works together
据我了解,
Dockerfile 就像创建镜像的 config/recipe,而 docker-compose 用于轻松创建多个可能有关系的容器,避免通过 Z05B6053C41A2130AFD6FC3B158BDA4E6 命令重复创建容器。
有两个文件。
Dockerfile
FROM node:lts-alpine
WORKDIR /server
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3030
CMD ["npm", "run", "dev"]
docker-compose.yml
version: '2.1'
services:
test-db:
image: mysql:5.7
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD=true
- MYSQL_USER=admin
- MYSQL_PASSWORD=12345
- MYSQL_DATABASE=test-db
volumes:
- ./db-data:/var/lib/mysql
ports:
- 3306:3306
test-web:
environment:
- NODE_ENV=local
#- DEBUG=*
- PORT=3030
image: node:lts-alpine
build: ./
command: >
npm run dev
volumes:
- ./:/server
ports:
- "3030:3030"
depends_on:
- test-db
问题 1
当我运行 docker-compose up --build
一个。 镜像将基于 Dockerfile 构建
湾。 那是什么?
问题2
test-db:
image: mysql:5.7
test-web:
environment:
- NODE_ENV=local
#- DEBUG=*
- PORT=3030
image: node:lts-alpine
我正在使用上面的代码下载 dockerhub 的图像,但是为什么以及何时需要在 --build 中创建的图像?
问题 3
volumes:
- ./db-data:/var/lib/mysql
这行是否意味着数据应该存储在位置 /var/lib/mysql 的 memory 中,而我将这些数据复制到我的工作目录./db-data 中?
更新
问题 4
build: ./
这条线是干什么用的?
建议通过入门go ,您的大部分问题都会得到解决。
让我试着向你强调其中的一些。
Dockerfile
和Compose file
的区别
Dockerfile
用于构建映像,而Compose
用于构建和运行应用程序。Dockerfile
构建图像,然后通过Compose
运行它docker-compose up --build
之后,镜像被构建并缓存在你的系统中,然后 Compose 将启动docker-compose.yml
定义的容器image
,那么如果指定build: ./
Volumes
。请记住,Doc 永远是您的朋友。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.