Я запускаю файл compose, который устанавливает mysql в контейнер и инициализирует базу данных. Я могу войти в контейнер и увидеть таблицы, которые создаются.
Но когда я пытаюсь войти в MySQL DB, используя SQLyog, не могу подключиться в этот раз. Я использовал publi c IP моего экземпляра ec2. В неудачном случае я использовал порт 3308 хост-машины. Если я использую порт по умолчанию (3306), он подключается !!! Но в порту 3306 мне нужно запустить другой сервер MySQL. Итак, чтобы запустить через порт 3308 хост-машины, что делать с моей стороны?
Это мой составной файл:
cat docker-compose.yml
version: '3'
volumes:
failed_db_data: {}
services:
faileddb:
build:
context: .
dockerfile: ./faileddb/Dockerfile
args:
- database=${FAILED_DB}
- password=${FAILED_DB_PASSWORD}
image: failed_db_image
volumes:
- failed_db_data:/var/lib/mysql
ports:
- "3308:3308"
Это Dockerfile:
cat faileddb/Dockerfile
FROM mysql:5.7.15
ARG database
ARG password
MAINTAINER me
ENV MYSQL_DATABASE=${database} \
MYSQL_ROOT_PASSWORD=${password}
ADD ./faileddb/failed100.sql /docker-entrypoint-initdb.d
EXPOSE 3308
Это файл .env
cat .env
#FAILED_DB
FAILED_DB_PORT=3308
FAILED_DB=failed
FAILED_DB_USER=root
FAILED_DB_PASSWORD=123
Это моя древовидная команда, из которой существует файл compose:
tree -a
.
├── .env
├── docker-compose.yml
└── faileddb
├── Dockerfile
└── failed100.sql
1 directory, 4 files
Теперь я создаю его:
docker-compose up -d
Creating network "reve_default" with the default driver
Creating volume "reve_failed_db_data" with default driver
Building faileddb
Step 1/7 : FROM mysql:5.7.15
5.7.15: Pulling from library/mysql
6a5a5368e0c2: Pull complete
0689904e86f0: Pull complete
486087a8071d: Pull complete
3eff318f6785: Pull complete
3df41d8a4cfb: Pull complete
1b4a00485931: Pull complete
0bab0b2c2630: Pull complete
264fc9ce512d: Pull complete
e0181dcdbbe8: Pull complete
53b082fa47c7: Pull complete
e5cf4fe00c4c: Pull complete
Digest: sha256:966490bda4576655dc940923c4883db68cca0b3607920be5efff7514e0379aa7
Status: Downloaded newer image for mysql:5.7.15
---> 18f13d72f7f0
Step 2/7 : ARG database
---> Running in 3d0dedd7e51f
Removing intermediate container 3d0dedd7e51f
---> bf054f294f4b
Step 3/7 : ARG password
---> Running in 0f09ff73a201
Removing intermediate container 0f09ff73a201
---> 9948007a0fc0
Step 4/7 : MAINTAINER me
---> Running in 4b11b4bba056
Removing intermediate container 4b11b4bba056
---> be09d8a1ad2a
Step 5/7 : ENV MYSQL_DATABASE=${database} MYSQL_ROOT_PASSWORD=${password}
---> Running in 0ad7701bc7d4
Removing intermediate container 0ad7701bc7d4
---> 9c28be0c1367
Step 6/7 : ADD ./faileddb/failed100.sql /docker-entrypoint-initdb.d
---> d8ab45637fca
Step 7/7 : EXPOSE 3308
---> Running in f3eda2d36bbe
Removing intermediate container f3eda2d36bbe
---> 4b16e6a06593
Successfully built 4b16e6a06593
Successfully tagged failed_db_image:latest
WARNING: Image for service faileddb was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Creating reve_faileddb_1 ... done
Проверка работоспособности:
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
217acd44a1df failed_db_image "docker-entrypoint.s…" 8 seconds ago Up 7 seconds 3306/tcp, 0.0.0.0:3308->3308/tcp reve_faileddb_1
введено в контейнер сейчас:
docker exec -it 217acd44a1df bash
введено в MySQL и проверено, в порядке ли таблицы, найдены те Хорошо, а также.
mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.15 MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| failed |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql> use failed;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
Теперь я пытаюсь войти в систему, используя SQLyog (с моего windows компьютера, используя publi c IP экземпляра ec2):
Что мне здесь не хватает? Заранее спасибо.