J'ai construit CloudStack pour comprendre CloudStack, mais j'ai un peu trébuché à ce moment-là, alors j'ai décidé d'écrire cet article. Il existe différentes façons de créer CloudStack, mais cette fois, nous utiliserons Docker.
MacBook Pro (Mojave 10.14.6) Docker (19.03.13) docker-compose (1.27.4)
Le simulateur CloudStack est une image Docker officiellement fournie par CloudStack. Le simulateur s'exécute dans un conteneur à l'exception de la base de données de gestion. (Comme je ne suis pas familier avec CloudStack, je vous serais reconnaissant de bien vouloir signaler les erreurs.)
Puisque l'image du simulateur est enregistrée dans Docker Hub, nous l'utiliserons cette fois. https://hub.docker.com/r/cloudstack/simulator
docker pull cloudstack/simulator
docker run --name cloudstack -d -p 8080:8080 cloudstack/simulator
J'ai essayé de l'exécuter officiellement et j'ai essayé d'accéder à http: // localhost: 8080 / client, mais une erreur s'est produite, comme indiqué dans l'image ci-dessous. Je ne savais pas ce qui se passait simplement en regardant cela, alors j'ai décidé de vérifier quel type d'erreur se produisait.
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.
À première vue, il semble que vous ne puissiez pas vous connecter à MySQL? Ainsi, lorsque j'ai enquêté de diverses manières, problème concernant l'erreur ci-dessus a été mentionné.
Cependant, comme le problème était résolu, je pensais que l'image de Docker Hub était ancienne, j'ai donc décidé de la créer à partir de la dernière version.
Donc, je vais utiliser Dernière version du référentiel officiel. Les fichiers liés à Docker se trouvent sous tools / docker.
** Veuillez cloner tel quel car vous aurez besoin de fichiers autres que ceux liés à Docker au moment de la construction. ** **
Exécutez Docker-compose. Probablement, en exécutant cette commande, la base de données de gestion de CloudStack est démarrée.
docker-compose -f tools/docker/docker-compose.yml up -d
Ensuite, je vais créer l'image à partir du Dockerfile, mais s'il s'agit du Dcokerfile cloné, une erreur pip se produira, alors corrigez-la.
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
#Veuillez ajouter cette ligne
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"]
Pour rendre l'image plus facile à comprendre, spécifiez le même nom de balise que la version CloudStack et créez-le. Si vous pouvez lancer le conteneur à l'aide de l'image générée et accéder à http: // localhost: 8080 / client, l'opération réussit. Le démarrage prend beaucoup de temps, vous pouvez donc supprimer l'option -d si vous voulez vérifier si elle fonctionne correctement.
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
C'est l'écran où vous pouvez y accéder.
Bien qu'il soit brièvement présenté dans l'article, il y a eu beaucoup d'essais et d'erreurs car il y avait peu de références. J'espère que cet article aidera quelqu'un qui trébuche autant que moi.
Recommended Posts