Есть ли способ Dockerize моей MySQL DB с помощью экспресса и размещения этого контейнера в цифровом океане ... и т.д.? - PullRequest
0 голосов
/ 29 октября 2019

Я хочу использовать Docker, чтобы создать контейнер, который содержит базу данных MySQL с Express для показа в определенные порты, например 8080, чтобы я мог получить это, используя React для представления.

Прямо сейчас я сделал простой сервер с экспрессом, который выбирает данные из базы данных MySQL и отображает их на «localhost: 8000 / posts» (posts - это место, где я использую SQL Query, чтобы выбрать все из таблицы.

Это файл index.ts:

//Main File
import express from "express";
import { connection } from "./db-connect";
const app = express();
const port = 8000;

var cors = require("cors");
/*
cors was installed so I could get the data
and display it to react, otherwise I was getting an error
in the console.
*/

app.use(cors());

app.listen(80, function() {
  console.log("CORS-enabled web server listening on port 80");
});

app.get("/", (req, res) => {
  res.send("Go to /posts to see the Data");
});

app.get("/posts", (req, res) => {
  connection.query("SELECT * FROM blog.posts", (err, result) => {
    if (err) {
      return res.send(err);
    } else {
      return res.json(result);
    }
  });
});

app.listen(port, err => {
  if (err) {
    return console.error(err);
  }
  return console.log(`server is listening on ${port}`);
});

Итак, у меня есть база данных с именем blog с таблицей с именем posts С этим я получаю массив с данными в качестве объекта, которыйэто то, что я хотел.

Что я хотел узнать, так это Dockerize это в контейнер. С MySQL, который имеет blog базу данных с posts таблицей, которая содержит id, title, body и user.

После того, как я хотел бы разместить Docker, содержащий базу данных, и развернуть его в digitalocean или аналогичной службе.

1 Ответ

0 голосов
/ 29 октября 2019

Я бы посоветовал использовать для этого docker-compose .

Тогда у вас будет файл .yml, который будет выглядеть примерно так:

version: '3.3'
services:
  db:
    image: mysql:5.7
    restart: always
    environment:
    # Use this to connect to your dockerized mysql container
      MYSQL_DATABASE: 'db'
      MYSQL_USER: 'user'
      MYSQL_PASSWORD: 'password'
      MYSQL_ROOT_PASSWORD: 'password'
    ports:
      - '3306:3306'
    expose:
      # Use this port in your express app
      - '3306'
    volumes:
      - my-db:/var/lib/mysql

volumes:
  my-db:

Затем вам нужно докеризировать ваше экспресс-приложение и включить его в файл docker-compose.yml . Здесь - руководство о том, как докеризировать приложение node.js, такое как ваше.

После того, как вам удалось соединить два контейнера в docker-compose, его развертывание на сервере Digital Ocean будеттак же просто, как установить Docker-Compose на сервер (если он еще не установлен), скопировать ваш код на сервер и запустить docker-compose up --build .

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