123*_*123 0 docker docker-compose
据我了解,
Dockerfile就像是创建镜像的config/recipe,而docker-compose用于轻松创建多个可能有关系的容器,避免通过docker命令重复创建容器。
有两个文件。
Dockerfile
FROM node:lts-alpine
WORKDIR /server
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3030
CMD ["npm", "run", "dev"]
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
问题 1
当我运行 docker-compose up --build 时
A。镜像将基于 Dockerfile
b 构建。那又怎样呢?
问题2
test-db:
image: mysql:5.7
Run Code Online (Sandbox Code Playgroud)
test-web:
environment:
- NODE_ENV=local
#- DEBUG=*
- PORT=3030
image: node:lts-alpine
Run Code Online (Sandbox Code Playgroud)
我正在使用上面的代码下载 dockerhub 的映像,但是为什么以及何时需要在 --build 中创建的映像?
问题3
volumes:
- ./db-data:/var/lib/mysql
Run Code Online (Sandbox Code Playgroud)
此行是否意味着数据应该存储在位置 /var/lib/mysql 的内存中,而我将此数据复制到工作目录 ./db-data 中?
更新
问题4
build: ./
Run Code Online (Sandbox Code Playgroud)
这条线是做什么用的?
建议仔细阅读入门指南,大部分问题都会得到解决。
让我尝试向您重点介绍其中的一些内容。
Dockerfile和之间的区别Compose file
Dockerfile用于构建图像,而Compose用于构建和运行应用程序。Dockerfile然后运行它Composedocker-compose up --build镜像后,构建并缓存在系统中,然后 Compose 将启动由docker-compose.ymlimage那么它将在构建时下载build: ./Volumes如果你想持久化数据就必须使用。请记住,医生永远是你的朋友。
| 归档时间: |
|
| 查看次数: |
7269 次 |
| 最近记录: |