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.
MacBook Pro (Mojave 10.14.6) Docker (19.03.13) docker-compose (1.27.4)
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
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. 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.
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.
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