您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
使用docker-compose一鍵搭建基於node環境的項目
发布时间:2022-02-13 14:20:15编辑:雪饮阅读()
docker官網的node(node12)項目下載下來后解壓后咱們重寫它的docker-compose.yml文件,好像直接就沒有這個文件,那就直接新建:
version: "3.7"
services:
app:
image: node:12-alpine
command: sh -c "yarn install && yarn run dev"
ports:
- 3000:3000
working_dir: /app
volumes:
- ./:/app
environment:
MYSQL_HOST: mysql
MYSQL_USER: root
MYSQL_PASSWORD: secret
MYSQL_DB: todos
mysql:
image: mysql:5.7
volumes:
- todo-mysql-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: todos
volumes:
todo-mysql-data:
這裏大多數都很容易理解,比較難理解的就是
這裏在services中app中的volumes中的./與/app的意思是綁定當前目錄到容器中的/app目錄(這裏的當前目錄就是上面"yarn install && yarn run dev"命令運行時所在目錄也是當前docker-compose.yml所在目錄)
而
- todo-mysql-data:/var/lib/mysql
這裏todo-mysql-data是自定義卷名,/var/lib/mysql這個則是該自定義卷名所綁定的最終成形的mysql容器中的/var/lib/mysql
與services同級別的volumes則是定義卷的提供的,因爲mysql段中的volumes中的todo-mysql-data是不會自動創建的,個人理解:mysql段中的volumes中提供的卷必須是已經創建的卷,而與同級于services的volumes中配置的todo-mysql-data則是自動創建的卷
MYSQL_HOST: mysql
這裏mysql是主機名,個人理解:位於services下的app,mysql其實都是已別名的形式存在,則都會已主機名的形式存在,該docker-compose並沒有創建網絡,則默認它們都是在同一個網絡的,同一個網絡中的每個主機名之間是可以直接通信的。
最後只要dockerd是運行的,則在該docker-compose.yml所在目錄執行docker-compose up
直到最後末尾幾行顯示如下:
app-app-1 | warning Resolution field "ansi-regex@5.0.1" is incompatible with requested version "ansi-regex@^2.0.0"
app-app-1 | warning Resolution field "ansi-regex@5.0.1" is incompatible with requested version "ansi-regex@^3.0.0"
app-app-1 | success Already up-to-date.
app-app-1 | Done in 0.59s.
app-app-1 | yarn run v1.22.17
app-app-1 | $ nodemon src/index.js
app-app-1 | [nodemon] 2.0.13
app-app-1 | [nodemon] to restart at any time, enter `rs`
app-app-1 | [nodemon] watching path(s): *.*
app-app-1 | [nodemon] watching extensions: js,mjs,json
app-app-1 | [nodemon] starting `node src/index.js`
app-mysql-1 | 2022-02-13T06:04:22.805118Z 2 [Note] Got an error reading communication packets
app-app-1 | Waiting for mysql:3306.
app-app-1 | Connected!
app-app-1 | Connected to mysql db at host mysql
app-app-1 | Listening on port 3000
時就可以瀏覽器訪問如:http://192.168.43.170:3000/
此時在瀏覽器中該項目中新增的新數據就算關閉了docker-compose up進程后重新啓動docker-compose up時仍舊存在,不會被重新初始化。
关键字词:docker,compose,node