主题是Use Docker Compose,这里是链接。本文学习使用Docker Compose启动应用。
进入之前todo list
的项目目录,创建compose.yaml
,输入以下内容。
├── getting-started-app/
│ ├── Dockerfile
│ ├── compose.yaml
│ ├── node_modules/
│ ├── package.json
│ ├── spec/
│ ├── src/
│ └── yarn.lock
services:
app:
image: node:18-alpine
command: sh -c "yarn install && yarn run dev"
ports:
- 127.0.0.1:3000:3000
working_dir: /app
volumes:
- ./:/app
environment:
MYSQL_HOST: mysql
MYSQL_USER: root
MYSQL_PASSWORD: secret
MYSQL_DB: todos
mysql:
image: mysql:8.0
volumes:
- todo-mysql-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: todos
volumes:
todo-mysql-data:
上面定义了两个service,分别是app和mysql。app中的 volumes
将当前目录映射到容器内的/app
目录。mysql中的volumes
将todo-mysql-data卷映射到容器内的/var/lib/mysql
。
根目录的volumes表示创建名为todo-mysql-data
的volume
移除之前启动的mysql容器和todo app容器,使用docker ps
和docker rm -f <ids>
即可
输入以下命令启动服务,其中-d
表示让服务在后台运行
docker compose up -d
你会看到类似的输出
Creating network "app_default" with the default driver
Creating volume "app_todo-mysql-data" with default driver
Creating app_app_1 ... done
Creating app_mysql_1 ... done
可以看到 Docker Compose 自动创建了一个名为app_default的network。这就是不用在上面声明network的原因。
访问http://lcoalhost:3000
,可以看到正常运行
如果需要停止运行docker compose需要执行以下命令。默认情况下是不会移除volume
的,除非加上--volumes
docker compose down
docker compose down --volumes