rusbaron
@rusbaron
Не стыдно не знать, стыдно не интересоваться

Есть ли где нибудь примеры dockerfile, для соединения в docker-compose с бд?

Есть сервис documize, состоит из одного бинарника. Ему для работы требуется бд.
Я попытался завернуть сервис в контейнер:
FROM ubuntu:latest

ENV DB_USER=""
ENV DB_PASS=""
ENV DB_NAME=""

WORKDIR /documize
ADD . /documize

RUN chmod 700 ./documize-enterprise-linux-amd64

EXPOSE 5001

CMD ["sh","-c","./documize-enterprise-linux-amd64 -port=5001 -db='${DB_USER}:${DB_PASS}@tcp(localhost:3306)/${DB_NAME}' -dbtype=mysql -salt=salt"]

И сделал по подобию docker-compose.yml
version: '2'
networks:
  bridge:
    driver: bridge
services:
  web:
    image: "documize:latest"
    container_name: documize
    depends_on:
      - db
    ports:
      - "5001:5001"
    environment:
      - DB_USER=MYSQL_USER
      - DB_PASS=MYSQL_PASSWORD
      - DB_NAME=MYSQL_DATABASE
    links:
      - db
    networks:
      - bridge
  db:
    image: "mysql:5.7"
    container_name: documize_db
    volumes:
      - mysql-data:/var/lib/mysql
    ports:
      - "3306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=MYSQL_ROOT_PASSWORD 
      - MYSQL_USER=MYSQL_USER
      - MYSQL_PASSWORD=MYSQL_PASSWORD
      - MYSQL_DATABASE=MYSQL_DATABASE
    networks:
      - bridge
volumes:
  mysql-data: {}

При запуске в логи выводит что mysql ожидает подключения а из моего контейнера выходит ошибка,что подключение не доступно.
Как правильно их соединить?Надо как то прокинуть вместо localhost адрес сети?
  • Вопрос задан
  • 201 просмотр
Решения вопроса 1
@Reversaidx
Привет, тебе нужно передать
CMD ["sh","-c","./documize-enterprise-linux-amd64 -port=5001 -db='${DB_USER}:${DB_PASS}@tcp(localhost:3306)/${DB_NAME}' -dbtype=mysql -salt=salt"]
на
CMD ["sh","-c","./documize-enterprise-linux-amd64 -port=5001 -db='${DB_USER}:${DB_PASS}@${DB_HOST}:3306 /${DB_NAME}' -dbtype=mysql -salt=salt"]
и передать host по имени контейнера(в примере db), Аля DB_USER=db
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы