So erstellen Sie CloudStack mit Docker

Einführung

Ich habe CloudStack erstellt, um CloudStack zu verstehen, bin aber zu diesem Zeitpunkt ein wenig gestolpert und habe beschlossen, diesen Artikel zu schreiben. Es gibt verschiedene Möglichkeiten, CloudStack zu erstellen, aber dieses Mal werden wir Docker verwenden.

Entwicklungsumgebung

MacBook Pro (Mojave 10.14.6) Docker (19.03.13) docker-compose (1.27.4)

Was ist CloudStack Simulator?

Der CloudStack-Simulator ist ein Docker-Image, das offiziell von CloudStack bereitgestellt wird. Der Simulator wird mit Ausnahme der Verwaltungsdatenbank in einem Container ausgeführt. (Da ich mit CloudStack nicht vertraut bin, würde ich mich freuen, wenn Sie auf Fehler hinweisen könnten.)

Da das Bild des Simulators in Docker Hub registriert ist, werden wir es dieses Mal verwenden. https://hub.docker.com/r/cloudstack/simulator

Ich habe es tatsächlich bewegt

docker pull cloudstack/simulator
docker run --name cloudstack -d -p 8080:8080 cloudstack/simulator

Ich habe versucht, es wie offiziell auszuführen und auf http: // localhost: 8080 / client zuzugreifen, aber es ist ein Fehler aufgetreten, wie in der Abbildung unten gezeigt. スクリーンショット 2020-10-22 2.55.40.png Ich wusste nicht, was passierte, nur indem ich mir das ansah, also beschloss ich zu überprüfen, welche Art von Fehler auftrat.

docker run --name cloudstack -p 8080:8080 cloudstack/simulator

ERROR [c.c.u.d.Merovingian2](main:null) (logid:) Unable to get a new db connection
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.

Auf den ersten Blick scheint es, dass Sie keine Verbindung zu MySQL herstellen können? Als ich verschiedene Untersuchungen durchführte, wurde Problem bezüglich des obigen Fehlers erwähnt.

Da das Problem jedoch geschlossen wurde, dachte ich, dass das Image von Docker Hub alt ist, und entschied mich, es aus der neuesten Version zu erstellen.

Das Hauptthema von hier

Daher werde ich [Neueste Version des offiziellen Repositorys] verwenden (https://github.com/apache/cloudstack/tree/4.13.1.0). Dateien, die sich auf Docker beziehen, befinden sich unter tools / docker.

** Bitte klonen Sie so wie es ist, da Sie zum Zeitpunkt der Erstellung andere Dateien als die mit Docker verbundenen benötigen. ** **.

Führen Sie Docker-compose aus. Wahrscheinlich wird durch Ausführen dieses Befehls die Verwaltungsdatenbank von CloudStack gestartet.

docker-compose -f tools/docker/docker-compose.yml up -d

Erstellen Sie als Nächstes das Image aus der Docker-Datei. Wenn es sich jedoch um die geklonte Dcoker-Datei handelt, tritt ein Pip-Fehler auf. Beheben Sie ihn daher.

Dockerfile


# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#
# CloudStack-simulator build

FROM ubuntu:16.04

MAINTAINER "Apache CloudStack" <[email protected]>
LABEL Vendor="Apache.org" License="ApacheV2" Version="4.13.1.0"

ARG DEBIAN_FRONTEND=noninteractive

RUN apt-get -y update && apt-get install -y \
    genisoimage \
    libffi-dev \
    libssl-dev \
    git \
    sudo \
    ipmitool \
    maven \
    openjdk-8-jdk \
    python-dev \
    python-setuptools \
    python-pip \
    python-mysql.connector \
    supervisor

RUN apt-get install -qqy mysql-server && \
    apt-get clean all && \
    mkdir /var/run/mysqld; \
    chown mysql /var/run/mysqld

RUN echo '''sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"''' >> /etc/mysql/mysql.conf.d/mysqld.cnf

COPY tools/docker/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY . ./root
WORKDIR /root
RUN ls

RUN mvn -Pdeveloper -Dsimulator -DskipTests clean install

#Bitte fügen Sie diese Zeile hinzu
RUN pip install --upgrade pip

RUN find /var/lib/mysql -type f -exec touch {} \; && \
    (/usr/bin/mysqld_safe &) && \
    sleep 5; \
    mvn -Pdeveloper -pl developer -Ddeploydb; \
    mvn -Pdeveloper -pl developer -Ddeploydb-simulator; \
    MARVIN_FILE=`find /root/tools/marvin/dist/ -name "Marvin*.tar.gz"`; \
    pip install $MARVIN_FILE

VOLUME /var/lib/mysql

EXPOSE 8080 8096

CMD ["/usr/bin/supervisord"]

Geben Sie zum besseren Verständnis des Bildes denselben Tag-Namen wie die CloudStack-Version an und erstellen Sie ihn. Wenn Sie den Container mit dem erstellten Image starten und auf http: // localhost: 8080 / client zugreifen können, ist dies erfolgreich. Der Start dauert lange. Daher möchten Sie möglicherweise die Option -d entfernen, wenn Sie überprüfen möchten, ob sie ordnungsgemäß funktioniert.

docker build -t cloudstack/simulator:4.13.1.0 . -f tools/docker/Dockerfile 
docker run --name cloudstack -d -p 8080:8080 cloudstack/simulator:4.13.1.0

Dies ist der Bildschirm, auf den Sie zugreifen können. スクリーンショット 2020-10-22 9.42.00.png

Schließlich

Obwohl es in dem Artikel kurz vorgestellt wird, war es eine Menge Versuch und Irrtum, da es nur wenige Referenzen gab. Ich hoffe, dieser Artikel hilft jemandem, der genauso stolpert wie ich.

Recommended Posts

So erstellen Sie CloudStack mit Docker
So erstellen Sie eine Rails 6-Umgebung mit Docker
So installieren Sie Docker
Wie man android-midi-lib baut
[Rails] So erstellen Sie eine Umgebung mit Docker
Docker-Build für mehrere Projekte mit Fock
So autorisieren Sie mit graphql-ruby
[Road_node.js_1-1] Der Weg zum Erstellen der Node.js Express MySQL-Umgebung mit Docker
So erstellen Sie die Docker + Springboot-App (für grundlegendes Lernen)
So ermitteln Sie, wie viel Festplatte Docker verwendet
So erstellen Sie eine Docker-Umgebung mit Gradle for IntelliJ
Versuchen Sie, mit Docker eine Java-Entwicklungsumgebung zu erstellen
So erstellen Sie mit Docker ~ Express ~ eine [TypeScript + Vue + Express + MySQL] -Umgebung
Ich habe versucht, die Umgebung nach und nach mit Docker aufzubauen
So starten Sie Camunda mit Docker
So erstellen Sie mit Docker ~ MySQL ~ eine [TypeScript + Vue + Express + MySQL] -Umgebung
So erstellen Sie eine Rails + Vue + MySQL-Umgebung mit Docker [neueste Version 2020/09]
So erstellen Sie mit Docker ~ Sequelize ~ eine [TypeScript + Vue + Express + MySQL] -Umgebung
So führen Sie einen Vertrag mit web3j aus
So sortieren Sie eine Liste mit Comparator
So teilen Sie Dateien mit Docker Toolbox
[Rails] So laden Sie Bilder mit Carrierwave hoch
[Java] So berechnen Sie das Alter mit LocalDate
Verwendung von Docker in VSCode DevContainer
Wie man SquashTM baut und wie man Japanisch unterstützt
Erstellen Sie in Eile ein Maven-Projekt mit dem Docker-Container von Maven
Erstellen Sie mit Docker einen Authentifizierungs-Proxyserver
Docker Container Build kann PHP-Radis nicht installieren
[Swift5] So implementieren Sie Animationen mit "lottie-ios"
Verstehe in 5 Minuten !! Wie man Docker benutzt
So führen Sie Blazor (C #) mit Docker aus
So fügen Sie Symbole mit Font awesome ein
So erstellen Sie mit rbenv eine Umgebung für eine beliebige Version von Ruby
So erstellen Sie eine Ruby on Rails-Entwicklungsumgebung mit Docker (Rails 6.x)
So erstellen Sie eine Ruby on Rails-Entwicklungsumgebung mit Docker (Rails 5.x)
So geben Sie Excel und PDF mit Excella aus
So überprüfen Sie das Protokoll im Docker-Container
Ausführen einer Methode und Verspotten mit JUnit
[Rails] So erstellen Sie ein Diagramm mit lazy_high_charts
So erhalten Sie einen Heapdump aus einem Docker-Container
So verkleinern Sie das Spring Boot Docker-Image
So löschen Sie einen Controller usw. mit einem Befehl
Wie man Stimme oder Musik mit Javascript spielt
Erstellen Sie eine Kotlin-App mit dem OpenJDK Docker-Container
[Ethereum] So führen Sie einen Vertrag mit web3j-Teil 2 aus
So implementieren Sie die Brotkrumenfunktion mit gretel
So aktualisieren Sie eine vorgefertigte Datei in einem Docker-Container
So generieren Sie einen Primärschlüssel mit @GeneratedValue
So erstellen Sie eine API mit GraphQL und Rails
So erstellen Sie hierarchische Kategoriedaten mithilfe von Vorfahren
So verknüpfen Sie Bilder mit FactoryBot Active Storage