写在前面
主题是Use Docker Compose,这里是链接。本文学习使用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