Соединение FTP-контейнера работает с docker-compose, а не с docker run - PullRequest
0 голосов
/ 23 января 2019

Мне нужно подключить FTP-сервер из контейнера my_go_app.Когда я делаю это из docker compose, я могу сделать это с:

apk add lftp
lftp -d ftp://julien:test@ftpd-server

, и он хорошо соединяется

, но когда я пытаюсь запустить свой контейнер через docker run, я не могуподключиться больше к FTP-серверу

Вот команда, которую я использую:

docker run --name my_go_app --rm -v volume:/go my_go_app:exp --network=my_go_app_network --env-file ./test.env

Вот рабочий docker-compose.yml

version: '3'

services:
  my_go_app:
    image: my_go_app:exp
    volumes:
      - ./volume:/go
    networks:
      my_go_app_network:
    env_file:
      - test.env

  ftpd-server:
    container_name: ftpd-server
    image: stilliard/pure-ftpd:hardened
    ports:
      - "21:21"
      - "30000-30009:30000-30000"
    environment:
      PUBLICHOST: "0.0.0.0"
      FTP_USER_NAME: "julien"
      FTP_USER_PASS: "test"
      FTP_USER_HOME: "/home/www/julien"
    restart: on-failure
    networks:
      my_go_app_network:

networks:
  my_go_app_network:
    external: true

РЕДАКТИРОВАТЬ:

Я добавил сеть как внешнюю и создал ее вручную с помощью:

 docker network create my_go_app_network

Теперь кажется, что my_go_app является частью сети по умолчанию:

my_go_app git:(tests) ✗ docker inspect my_go_app -f "{{json .NetworkSettings.Networks }}"         
{"bridge":{"IPAMConfig":null,"Links":null,"Aliases":null,"NetworkID":"62b2dff15ff00d5cd56c966cc562b8013d06f18750e3986db530fbb4dc4cfba7","EndpointID":"6d0a81a83cdf639ff13635f0a38eeb962075cd729181b7c60fadd43446e13607","Gateway":"172.17.0.1","IPAddress":"172.17.0.2","IPPrefixLen":16,"IPv6Gateway":"","GlobalIPv6Address":"","GlobalIPv6PrefixLen":0,"MacAddress":"02:42:ac:11:00:02","DriverOpts":null}}


➜  my_go_app git:(tests) ✗ docker network ls
  NETWORK ID          NAME                DRIVER              SCOPE
  62b2dff15ff0        bridge              bridge              local
  f33ab34dd91d        host                host                local
  ee2d604d6604        none                null                local
  61a661c82262        my_go_app_network      bridge              local

Чего мне не хватает?

1 Ответ

0 голосов
/ 23 января 2019

Ваша сеть my_go_app_network должна быть объявлена ​​как "внешняя", в противном случае compose создаст сеть с именем " имя_проекта _my_go_app_network".Поэтому ваше приложение go не было в одной сети с сервером ftp.

(я полагаю, вы создали my_go_app_network вручную, чтобы ваша docker run не выдавала ошибку "сеть не найдена".)

РЕДАКТИРОВАТЬ

Вы помещаете аргументы внеправильный порядок.Имя изображения должно быть последним, иначе они рассматриваются как «команды» для контейнера.Попробуйте

docker run --name my_go_app --rm -v volume:/go --network=my_go_app_network --env-file ./test.env my_go_app:exp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...