gitlab和docker组成:安装目录是空容器内空的

发布于 2025-02-07 22:04:17 字数 1675 浏览 2 评论 0原文

我正在尝试将Gitlab与Docker-Compose一起使用,以将我的节点应用部署到数字海洋液滴中。问题在于,包含节点应用程序的源代码的容器内的已安装目录是空的。

dockerfile

FROM node:10.15.0
# Define working directory and copy source
WORKDIR /app
# copy everything
COPY . .
# npm install
RUN npm install

docker-compose.yml

version: '3'
services:
  mongodb:
    hostname: mongodb
    image: 'mongo:3.4.1'
    environment:
      - MONGO_DATA_DIR=/data/db
      - MONGO_LOG_DIR=/dev/null
      - MONGODB_USER="mongodbadmin"
      - MONGODB_PASS="mongodbadmin&*&"
    expose:
      - "27017"
    volumes:
      - './data/mongo:/data/db'
    command: mongod --smallfiles --logpath=/dev/null
    restart: always
  server:
    build:
      dockerfile: Dockerfile
      context: .
    working_dir: /app
    volumes:
      - './src:/app/src'
    depends_on:
      - mongodb
    environment:
      - NODE_ENV=dev
    ports:
      - 3000:3000
    command: npm start

.gitlab-ci.yml

image: docker/compose:latest

stages:
    - publish
    - deploy

variables:
    TAG_LATEST: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:latest
    TAG_COMMIT: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHORT_SHA
deploy:
    stage: deploy
    tags:
        - deployment
    script:
        - apk update && apk add openssh-client
        - eval $(ssh-agent -s)
        - echo "$ID_RSA" | tr -d '\r' | ssh-add - > /dev/null
        - docker-compose -H "ssh://$SERVER_USER@$SERVER_IP" down --remove-orphans
        - docker-compose -H "ssh://$SERVER_USER@$SERVER_IP" build
        - docker-compose -H "ssh://$SERVER_USER@$SERVER_IP" up
    only:
        - main

I am trying to use GitLab with Docker-compose to deploy my node app to a Digital Ocean droplet. The problem is that the mounted directory inside the container, which contains the source code of the node application, is empty.

Dockerfile

FROM node:10.15.0
# Define working directory and copy source
WORKDIR /app
# copy everything
COPY . .
# npm install
RUN npm install

docker-compose.yml

version: '3'
services:
  mongodb:
    hostname: mongodb
    image: 'mongo:3.4.1'
    environment:
      - MONGO_DATA_DIR=/data/db
      - MONGO_LOG_DIR=/dev/null
      - MONGODB_USER="mongodbadmin"
      - MONGODB_PASS="mongodbadmin&*&"
    expose:
      - "27017"
    volumes:
      - './data/mongo:/data/db'
    command: mongod --smallfiles --logpath=/dev/null
    restart: always
  server:
    build:
      dockerfile: Dockerfile
      context: .
    working_dir: /app
    volumes:
      - './src:/app/src'
    depends_on:
      - mongodb
    environment:
      - NODE_ENV=dev
    ports:
      - 3000:3000
    command: npm start

.gitlab-ci.yml

image: docker/compose:latest

stages:
    - publish
    - deploy

variables:
    TAG_LATEST: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:latest
    TAG_COMMIT: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHORT_SHA
deploy:
    stage: deploy
    tags:
        - deployment
    script:
        - apk update && apk add openssh-client
        - eval $(ssh-agent -s)
        - echo "$ID_RSA" | tr -d '\r' | ssh-add - > /dev/null
        - docker-compose -H "ssh://$SERVER_USER@$SERVER_IP" down --remove-orphans
        - docker-compose -H "ssh://$SERVER_USER@$SERVER_IP" build
        - docker-compose -H "ssh://$SERVER_USER@$SERVER_IP" up
    only:
        - main

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

软的没边 2025-02-14 22:04:17

我通过删除卷来解决问题。那是因为Dockerfile本身复制了源代码,并且不需要卷。我只需要在开发环境中的卷,以便在进行代码更改时进行容器进行更新:)

我将创建单独的docker-compose.yml文件:一个用于开发,另一个用于生产环境。

I solved the issue by removing the volume. That is because the dockerfile itself copies the source code and there is no need for the volume. I only needed the volume in my development environment so that the container gets updated while I make code changes :)

I will create separate docker-compose.yml files: one for development and another for the production environment.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文