Docker + eggjs + redis + mongdb 初体验

//docker-compose.yml
version: '3'
services:
    egg_test:
        container_name: server
        build: 
            context: .
            dockerfile: Dockerfile
        depends_on: 
            - redis
            - mongo
        ports:
          - "7003:7001"
        networks: 
                - my-server
    mongo:
        container_name: mongo
        image: mongo
        volumes:
            - /home/DockerCompose/lottery/mongo/db:/data/db   # /data/db是container中存放数据位置
        restart: always
        networks: 
            - my-server
    mongo-express:
        links:
          - mongo:mongo
        image: mongo-express
        restart: always
        depends_on:
            - mongo
        networks: 
            - my-server
        ports:
          - 8081:8081
        environment:
          ME_CONFIG_OPTIONS_EDITORTHEME: 3024-night
          ME_CONFIG_BASICAUTH_USERNAME: junmoxiao11
          ME_CONFIG_BASICAUTH_PASSWORD: junmoxiao11
          ME_CONFIG_MONGODB_ADMINUSERNAME: junmoxiao
          ME_CONFIG_MONGODB_ADMINPASSWORD: junmoxiao
    redis:
        container_name: redis
        image: redis
        restart: on-failure
        volumes:
            - /home/DockerCompose/lottery/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf
            - /home/DockerCompose/lottery/redis/db/:/data/
        networks: 
            - my-server
networks:
    my-server:
//DockerFile.yml
# 设置基础镜像,如果本地没有该镜像,会从Docker.io服务器pull镜像
FROM node:10.13.0

# 配置环境变量
ENV NODE_ENV development

# 这个是容器中的文件目录
RUN mkdir -p /usr/src/app 

# 设置工作目录
WORKDIR /usr/src/app

# 拷贝package.json文件到工作目录
# !!重要:package.json需要单独添加。
# Docker在构建镜像的时候,是一层一层构建的,仅当这一层有变化时,重新构建对应的层。
# 如果package.json和源代码一起添加到镜像,则每次修改源码都需要重新安装npm模块,这样木有必要。
# 所以,正确的顺序是: 添加package.json;安装npm模块;添加源代码。
COPY package.json /usr/src/app/package.json

# 安装npm依赖(使用淘宝的镜像源)
# 如果使用的境外服务器,无需使用淘宝的镜像源,即改为`RUN npm i`。
RUN npm i --production --registry=https://registry.npm.taobao.org

# 拷贝所有源代码到工作目
COPY . /usr/src/app

# 暴露容器端口
EXPOSE 7001

CMD npm run deploy


刚用起 docker 来进行项目的配置和初始化,特留下此配置笔记;

配置过程中的问题:

  1. 容器之间需要设置统一的 networks 否则无法访问;
  2. egg 内连接 redis 和 mongodb 时 host 为容器名;
  3. 启动 egg 服务指令应去掉 --deamon ,否则会访问不到;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Beq

我们应该鼓励分享,开源精神

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值