Docker部署全栈项目:七、Docker-Compose
完整的 docker-compose.yml
如下:
version: '3'
services:
mongo:
container_name: 'luokaiii-mongo'
image: 'mongo:4.0.12'
volumes:
- mongodata:/data/db
environment:
MONGO_INITDB_ROOT_USERNAME: mongoadmin
MONGO_INITDB_ROOT_PASSWORD: password
restart: always
expose:
- '27017'
mariadb:
container_name: 'luokaiii-mysql'
image: 'mariadb:10.4.8'
volumes:
- './mysql/data/:/var/lib/mysql'
- './mysql/conf/local.cnf:/etc/mysql/conf.d/local.cnf'
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: db_user
command: ['mysqld', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci']
restart: always
expose:
- '3306'
redis:
container_name: 'luokaiii-redis'
image: 'redis:4.0.14'
volumes:
- './redis/data:/data'
command: redis-server --requirepass password
restart: always
expose:
- '6379'
api:
container_name: 'luokaiii-api'
depends_on:
- mongo
- redis
- mariadb
image: 'luokaiii-api:latest'
ports:
- '8080:8080'
restart: always
nginx:
container_name: 'luokaiii-nginx'
depends_on:
- api
image: 'nginx:alpine'
volumes:
- './nginx/conf:/etc/nginx/conf.d'
- './nginx/html:/usr/www/luokaiii/cn/html'
ports:
- '80:80'
restart: always
volumes:
mongodata:
部署后的效果如下:
至此,整个项目在Docker上的部署已经完成。
如果有需要,您也可以将 MongoDB、Redis、MySQL等服务暴露给宿主机,以供外部连接。