Сон не работает по команде docker-compose, не работает 5 раз - PullRequest
0 голосов
/ 28 сентября 2019

У меня альпийское изображение.Я пытаюсь заснуть в моей командной строке docker-compose (для тестирования некоторых вещей).Однако при этом:

команда: sleep 30s && NODE_ENV = рабочий узел app.js

выдает ошибку:

thesailsapp_1  | sleep: invalid number '&&'
thesailsapp_1  | sleep: invalid number '&&'
thesailsapp_1  | sleep: invalid number '&&'
thesailsapp_1  | sleep: invalid number '&&'
thesailsapp_1  | sleep: invalid number '&&'
nginx-certbot_thesailsapp_1 exited with code 1

Кто-нибудь знает, как это исправить?И кто-нибудь знает, почему это ошибки 5 раз, а не только один раз?(здесь изучается докер)

Вот мой полный файл для создания докера:

version: '3'

services:
  thesailsapp:
    image: noitidart/private-container:thesailsapp
    restart: always
    environment:
      - sails_log__level=silly
    command: sleep 30s && NODE_ENV=production node app.js
  nginx:
    image: nginx:1.15-alpine
    restart: always
    volumes:
      - ./data/nginx:/etc/nginx/conf.d
      - ./data/certbot/conf:/etc/letsencrypt
      - ./data/certbot/www:/var/www/certbot
    ports:
      - 80:80
      - 443:443
    command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'"
  certbot:
    image: certbot/certbot
    restart: always
    volumes:
      - ./data/certbot/conf:/etc/letsencrypt
      - ./data/certbot/www:/var/www/certbot
    entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"

Вот мой файл докера:

# Start with a node 8.16 slim image to keep the container size down
FROM node:12-alpine

# Specify a default directory for where our app will be placed within the container.
#
# This can be overridden with docker build --build-arg WORKDIR=some-dir/ .
# Always append the directory name with a /
ARG WORKDIR=/opt/apps/thesailsapp/

# Create a directory to contain our application
RUN mkdir -p $WORKDIR

# Switch default working directory to our new directory
WORKDIR $WORKDIR

# Copy our package and lock files over first,
# as the build can then cache this step seperately from our code.
#
# This allows us to build faster when we only have code changes,
# as the install step will be loaded from cache,
# and rebuilt when package files change
COPY package.json package-lock.json $WORKDIR

# Set NODE_ENV=development as i need the webpack dev files

# Install all deps, including development deps, as that is needed
# for the webpack build phase. Uninstall puppeteer first though,
# that's a massive install and not used for building.
RUN NODE_ENV=production npm i

# Now copy over your actual source code
#
# REMEMBER: We are ignoring node_modules in the .dockerignore file explicitly,
# so docker will not copy over that directory. The app will use th modules installed above.
COPY . $WORKDIR

# Build frontend production assets
RUN NODE_ENV=production npx webpack --config webpack.config.js

EXPOSE 1337

### why is npm start here? this should only happen on the droplet instance
# Set the default CMD to run when starting this image.
#
# You can easily override this when running the image
CMD npm start

1 Ответ

1 голос
/ 28 сентября 2019

command в вашем файле docker-compose.yml должна быть одной командой.Если вам нужно более одной команды, единственная команда может быть оболочкой с фактическими командами в качестве параметров.

command: sh -c "sleep 30s && NODE_ENV=production node app.js"

Вы уже делаете это во многих других местах, поэтому я предполагаю, что конструкция знакома.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...