Рубрики
Uncategorized

Dockerized Next.js на SSH -сервере с использованием действия GitHub.

Задумывались ли вы, как настроить Docker на SSH -сервере, если да, этот урок для вас.

Задумывались ли вы, как настроить Docker на SSH -сервере, если да, этот урок для вас. В случае, если вы хотите получить базовое понимание Docker, вы можете нажать на это Ссылка учиться .

Шаг 1: SSH на сервер, используя

ssh root@xxx.xxx.xxx.xxx –p XXXX

root — означает пользователь xxx.xxx.xxx: обозначает IP -адрес удаленного сервера -p: укажите ссылку на порт, сервер находится на XXXX: номер порта

Шаг 2: Установите Docker на сервере

 curl -fsSL https://get.docker.com -o get-docker.sh
 DRY_RUN=1 sh ./get-docker.sh
 sudo sh get-docker.sh


После ввода вышеуказанной команды тип Docker Чтобы подтвердить, доступен ли Docker на удаленном сервере.

шаг 3: В корне вашего SSH -сервера создайте скрипт deploy.sh. В Linux это называется Shell Script.

коснуться deploy.sh

После этого мы собираемся написать сценарий оболочки в нашем файле .SH, используя редактор Linux VI.

vi deploy.sh

Следующим шагом для вас является скопирование кода и прошлого в редактор VI. Но для этого вы должны нажать букву «A», чтобы включить режим вставки в редактировании VI.

if [ -d "$DIR" ]; then

  cd Client
  echo "git pull project"
  git pull https://username:password@github.com/XXXXXX/Client.git

else 

  git clone https://username:password@github.com/XXXXXX/Client.git
  cd Client

fi

docker build . -t client
docker run -p 2000:3000  client

DIR: Имя переменной папки или каталога, которое мы ищем.

Оператор IF проверяет, существует ли каталог. Если он делает

CD Client который переключается на этот каталог, затем втягивает недавно обновленный код в этот каталог.

В другом, чтобы войти в систему, чтобы запустить и потянуть репо

git pull https://username: password@github.com/xxxxxx/yyyy.git `

Имя пользователя: ваше имя пользователя GitHub

Пароль: ваш пароль GitHub

XXXXXX: ваше имя пользователя GitHub. Возможно, то же самое имеет ваше имя пользователя или другое. Если проект является открытым исходным кодом, или вы просто участник, который он имеет для имени пользователя человека, который настроил проект.

yyyy.git: имя репо

Двигаясь дальше, если что -то еще, то просто, дайте клонировать проект и измените его каталог на имя проекта.

Чтобы создать и запустить изображение, изображение, которое мы используем Docker Build. -t Клиент Docker Run -d -p 2000: 3000 Клиент Примечание В нашем проекте Next.js мы включим файл DockerFile в корне нашего проекта. Это то, от чего будет зависеть команда сборки. -t означает назвать его тегом для легкой идентификации.

Команда Docker Run -p помогает выставить внутренний работающий порт на внешний порт. Port 2000 — это порт сервера, а порт 3000 — это порт, работающий внутри контейнера Docker.

**** Некоторые команды Docker

Docker PS: В настоящее время работающий контейнер Docker PS -A: История всех активных и не активных контейнеров Docker Stop Containerid: чтобы остановить активное контейнер с помощью идентификатора контейнера

Docker журналирует идентификатор контейнера: чтобы просмотреть, как база кода работает внутри контейнера. Это способ мониторинга контейнера

Чтобы выйти из режима вставки в редакторе VI Нажмите клавишу Escape, за которым следует столбец Shift и Tip WQ (Сохранить и вполне)

Наконец -то запустите команду ниже, чтобы сделать исполняемый файл файла deploy.sh

chmod u+x deploy.sh

Шаг 3

Добавьте Docker в вашу папку root steck.js. Для этого создать имя файла DockerFile. Код ниже в Dockerfile.

ПРИМЕЧАНИЕ FILENAME — это DockerFile.

`

FROM node:14.17-alpine
RUN mkdir -p /home/app/ && chown -R node:node /home/app
WORKDIR /home/app
COPY --chown=node:node . .

USER node

RUN yarn install --frozen-lockfile
RUN yarn build

EXPOSE 3000
CMD [ "yarn", "start" ]

«

Дайте разорвать вышеупомянутый сценарий

От узла: 14.17-альпийна: мы тянут очень маленькое изображение Linux, называемое альпийским в наш контейнер. Помните, что наш контейнер нуждается в операционной системе хоста. Запустите mkdir -p/home/app/&& chown -r Узел: Узел/Главная/Приложение: Вам не нужно беспокоиться об этой команде

Запустить пряжу установку-Frozen-Lockfile: Установка пряжи и заморозить пакет.

Запустите строительство пряжи: для строительства проекта, как и следующая сборка, разоблачение 3000: разоблачить порт 3000 на внешнюю контейнер [«пряжа», «Start»]: Чтобы запустить проект в контейнере

Шаг 4: Это наш последний шаг, это включает в себя создание нашего файла .github/docker.yaml в корне нашего проекта.

Примечание docker.yaml Это может быть любое имя

«

name: client
on:
  push:
    branches: main
jobs:
  build-and-deploy:
    name: Build and deploy next site
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Code
        uses: actions/checkout@v2.3.1

      - name: Install Node.js
        uses: actions/setup-node@v1
        with:
          node-version: '13.x'

      - name: Install Project Dependencies
        run: npm install



      - name: Build
        run: npm run build

      - name: Verify build
        run: ls -la out

      - name: copy file via ssh key
        uses: appleboy/scp-action@master
        env:
          HOST:  XXXXXXX
          PORT:  XXXXX
          USERNAME:  XXXXX
          PASSWORD: XXXXXX
          command_timeout: 100m
          script: sh deploy.sh

Чтобы понять приведенный выше файл YAML, вы можете проверить следующие действия CI/CD GitHub. Единственный раздел, который я бы объяснил, — это ключ сценария. Скрипт запустить файл deploy.sh, который мы создали на нашем сервере. Извините, что пост слишком длинный, это просто необходимо.

Это все. Спасибо за чтение.

Оригинал: «https://dev.to/es404020/dockerized-nextjs-on-ssh-server-using-github-action-2enm»