Задумывались ли вы, как настроить 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»