首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有创建GitLab CI Docker WORKDIR

没有创建GitLab CI Docker WORKDIR
EN

Stack Overflow用户
提问于 2019-09-05 20:32:06
回答 1查看 2.2K关注 0票数 2

我正在尝试通过NodeJS CI将我的GitLab回购部署到一个DO液滴上。我一直在跟踪本指南这样做。奇怪的是,部署管道似乎成功了,但是如果我将SSH放入到这个框中,我可以看到应用程序没有运行,因为在/usr/src/app中找不到一个/usr/src/app中的WORKDIR,这是Dockerfile所指向的WORKDIR

gitlab-ci.yml

代码语言:javascript
复制
cache:
  key: "${CI_COMMIT_REF_NAME} node:latest"
  paths:
    - node_modules/
    - .yarn

stages:
  - build
  - release
  - deploy

build:
  stage: build
  image: node:latest
  script:
    - yarn
  artifacts:
    paths:
      - node_modules/

release:
  stage: release
  image: docker:latest
  only:
    - master
  services:
    - docker:dind
  variables:
    DOCKER_DRIVER: "overlay"
  before_script:
    - docker version
    - docker info
    - docker login -u ${CI_REGISTRY_USER} -p ${CI_BUILD_TOKEN} ${CI_REGISTRY}
  script:
    - docker build -t ${CI_REGISTRY}/${CI_PROJECT_PATH}:latest --pull .
    - docker push ${CI_REGISTRY}/${CI_PROJECT_PATH}:latest
  after_script:
    - docker logout ${CI_REGISTRY}

deploy:
  stage: deploy
  image: gitlab/dind:latest
  only:
    - master
  environment: production
  when: manual
  before_script:
    - mkdir -p ~/.ssh
    - echo "${DEPLOY_SERVER_PRIVATE_KEY}" | tr -d '\r' > ~/.ssh/id_rsa
    - chmod 600 ~/.ssh/id_rsa
    - eval "$(ssh-agent -s)"
    - ssh-add ~/.ssh/id_rsa
    - ssh-keyscan -H ${DEPLOYMENT_SERVER_IP} >> ~/.ssh/known_hosts
  script:
    - printf "DB_URL=${DB_URL}\nDB_NAME=${DB_NAME}\nPORT=3000" > .env
    - scp -r ./.env ./docker-compose.yml root@${DEPLOYMENT_SERVER_IP}:~/
    - ssh root@${DEPLOYMENT_SERVER_IP} "docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}; docker-compose rm -sf scraper; docker pull ${CI_REGISTRY}/${CI_PROJECT_PATH}:latest; docker-compose up -d"

Dockerfile

代码语言:javascript
复制
FROM node:10

WORKDIR /usr/src/app

COPY package.json ./
RUN yarn

COPY . .
EXPOSE 3000

CMD [ "yarn", "start" ]

docker-compose.yml

代码语言:javascript
复制
version: "3"
services:
  scraper:
    build: .
    image: registry.gitlab.com/arby-better/scraper:latest
    volumes:
      - .:/usr/src/app
      - /usr/src/app/node_modules
    ports:
      - 3000:3000
    environment:
      - NODE_ENV=production
    env_file:
      - .env

我在管道中使用GitLab共享运行程序。我的管道看起来执行得很好,但是对于这个符号链接失败,在最后:

...which,我觉得没什么好担心的。如果我将SSH放入我的盒子中,然后去复制和检查对接者撰写的内容:

Docker尚未创建/usr/src/app

版本:

  • 码头工人: 19.03.1
  • 码头工人-组成: 1.22.0

我的DO框是Docker 1-单击btw。任何帮助都很感激!

编辑

我修改了我的Dockerfile,试图强制dir创建,因此在声明它为工作dir的行之前添加了RUN mkdir -p /usr/src/app。这仍然不能创建目录..。

当我查看容器状态‘(docker-compose ps),’时,我可以看到容器处于退出状态&是否使用了代码1或254...any来退出?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-06 10:37:56

您的撰写文件是为开发环境设计的,在开发环境中,代码目录将被安装到开发人员机器上的代码的卷挂载所取代。您在生产中没有这个持久目录,也不应该依赖于生产中映像之外的代码,从而使复制到映像中的目的落空。

代码语言:javascript
复制
version: "3"
services:
  scraper:
    build: .
    image: registry.gitlab.com/arby-better/scraper:latest
    # Comment out or delete these lines, they do not belong in production
    #volumes:
    #  - .:/usr/src/app
    #  - /usr/src/app/node_modules
    ports:
      - 3000:3000
    environment:
      - NODE_ENV=production
    env_file:
      - .env
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57812615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档