คำถามติดแท็ก docker-compose

การเขียนเป็นเครื่องมือสำหรับการกำหนดและเรียกใช้แอพพลิเคชั่นที่ซับซ้อนด้วย Docker ด้วย Compose คุณกำหนดแอปพลิเคชั่นที่มีหลายคอนเทนเนอร์ในไฟล์เดียวจากนั้นหมุนแอปพลิเคชันของคุณในคำสั่งเดียวซึ่งทำทุกอย่างที่ต้องทำเพื่อให้แอปพลิเคชันทำงานได้

13
วิธีการใช้ตัวแปรสภาพแวดล้อมในนักเทียบท่าเขียน
ฉันต้องการใช้ตัวแปร env ภายใน docker-compose.yml โดยมีค่าที่ส่งผ่านไปในเวลาที่นักเทียบท่าเขียนขึ้น นี่คือตัวอย่าง ฉันกำลังทำสิ่งนี้ในวันนี้โดยใช้คำสั่งเรียกใช้นักเทียบท่าพื้นฐานซึ่งมีสคริปต์ของตัวเอง มีวิธีการที่จะทำให้มันสำเร็จโดยการเขียน proxy: hostname: $hostname volumes: - /mnt/data/logs/$hostname:/logs - /mnt/data/$hostname:/data


5
ฉันจะกำหนดชื่อของภาพที่สร้างขึ้นด้วยองค์ประกอบนักเทียบท่าได้อย่างไร
ฉันใช้นักแต่งเพื่อสร้างสภาพแวดล้อมการพัฒนาของฉัน ฉันต้องการสร้างภาพเฉพาะ แต่ฉันไม่ทราบวิธีตั้งชื่อให้กับภาพนั้น wildfly: build: /path/to/dir/Dockerfile container_name: wildfly_server ports: - 9990:9990 - 80:8080 environment: - MYSQL_HOST=mysql_server - MONGO_HOST=mongo_server - ELASTIC_HOST=elasticsearch_server volumes: - /Volumes/CaseSensitive/development/wildfly/deployments/:/opt/jboss/wildfly/standalone/deployments/ links: - mysql:mysql_server - mongo:mongo_server - elasticsearch:elasticsearch_server เมื่อฉันรันdocker-composeทุกอย่างก็โอเค แต่ฉันได้รับชื่อแบบสุ่มสำหรับภาพใหม่ เป็นไปได้ไหมที่จะตั้งชื่อให้กับอิมเมจการสร้าง?

4
วิธีเก็บข้อมูลในฐานข้อมูล postgres ที่ปรับเทียบแล้วโดยใช้วอลุ่ม
ไฟล์เขียนของนักเทียบท่าของฉันมีสามคอนเทนเนอร์เว็บ nginx และ postgres Postgres มีลักษณะเช่นนี้: postgres: container_name: postgres restart: always image: postgres:latest volumes: - ./database:/var/lib/postgresql ports: - "5432:5432 เป้าหมายของฉันคือการติดปริมาณซึ่งสอดคล้องกับโฟลเดอร์ท้องถิ่นเรียกว่า./databaseภายใน postgres /var/lib/postgresคอนเทนเนอร์ เมื่อฉันเริ่มต้นคอนเทนเนอร์เหล่านี้และแทรกข้อมูลลงใน postgres ฉันตรวจสอบว่า/var/lib/postgres/data/base/เต็มไปด้วยข้อมูลที่ฉันเพิ่ม (ในคอนเทนเนอร์ postgres) แต่ในระบบท้องถิ่นของฉัน./databaseจะได้รับdataโฟลเดอร์เท่านั้นเช่น./database/dataถูกสร้างขึ้น แต่ว่างเปล่า . ทำไม? หมายเหตุ: ไฟล์นี้แนะนำว่าไฟล์ด้านบนของฉันควรใช้งานได้ บุคคลนี้ใช้บริการนักเทียบท่าซึ่งน่าสนใจ อัพเดท 1 ตามคำแนะนำของ Nick ฉันได้docker inspectและพบ: "Mounts": [ { "Source": "/Users/alex/Documents/MyApp/database", "Destination": "/var/lib/postgresql", "Mode": "rw", "RW": …

6
วิธีการทำให้นักเทียบท่าประกอบสร้างคอนเทนเนอร์ใหม่จากอิมเมจใหม่เสมอ
ภาพนักเทียบท่าของฉันถูกสร้างขึ้นบนเซิร์ฟเวอร์ Jenkins CI และถูกส่งไปยัง Docker Registry ส่วนตัวของเรา เป้าหมายของฉันคือการจัดเตรียมสภาพแวดล้อมด้วยตัวจัดเรียงซึ่งเริ่มต้นสถานะภาพที่สร้างไว้เสมอ ขณะนี้ฉันกำลังใช้นักเทียบท่า - เขียน 1.3.2 และ 1.4.0 บนเครื่องที่แตกต่างกัน แต่เรายังใช้รุ่นเก่ากว่านี้ก่อนหน้านี้ ฉันมักจะใช้docker-compose pull && docker-compose up -dคำสั่งเพื่อดึงภาพสดจากรีจิสทรีและเริ่มต้นขึ้น ฉันเชื่อว่าพฤติกรรมที่ฉันชอบนั้นทำงานได้ตามที่คาดไว้จนถึงจุดหนึ่ง แต่หลังจากนั้นก็docker-compose upเริ่มที่จะเรียกใช้คอนเทนเนอร์ที่หยุดทำงานก่อนหน้านี้แทนการเริ่มสร้างภาพที่สร้างขึ้นทุกครั้ง มีวิธีกำจัดพฤติกรรมนี้หรือไม่? เป็นไปได้ไหมที่จะเชื่อมต่อในไฟล์กำหนดค่า docker-compose.yml เพื่อไม่พึ่งพา "ไม่ลืม" บางอย่างในบรรทัดคำสั่งในทุกการเรียกใช้ PS นอกจากการหาวิธีเพื่อให้บรรลุเป้าหมายของฉันฉันก็อยากจะรู้มากขึ้นเกี่ยวกับพื้นหลังของพฤติกรรมนี้ ฉันคิดว่าความคิดพื้นฐานของ Docker คือการสร้างโครงสร้างพื้นฐานที่ไม่เปลี่ยนแปลง พฤติกรรมปัจจุบันของนักเทียบท่าแต่งดูเหมือนจะขัดแย้งกันธรรมดากับวิธีนี้ .. หรือฉันจะพลาดบางจุดที่นี่?

13
ประกอบด้วยนักเทียบท่า: node_modules ไม่มีอยู่ในวอลุ่มหลังจากการติดตั้ง npm สำเร็จ
ฉันมีแอพที่มีบริการดังต่อไปนี้: web/ - เก็บและรันเว็บเซิร์ฟเวอร์ขวดหลาม 3 บนพอร์ต 5000 ใช้ sqlite3 worker/- มีindex.jsไฟล์ซึ่งเป็นผู้ปฏิบัติงานสำหรับคิว ปฏิสัมพันธ์เว็บเซิร์ฟเวอร์ที่มีคิวนี้ใช้ API JSON 9730ผ่านพอร์ต ผู้ปฏิบัติงานใช้ Redis สำหรับการจัดเก็บ ผู้ปฏิบัติงานยังเก็บข้อมูลไว้ในโฟลเดอร์ด้วยworker/images/ workerตอนนี้คำถามนี้เฉพาะที่เกี่ยวข้องกับ worker/Dockerfile FROM node:0.12 WORKDIR /worker COPY package.json /worker/ RUN npm install COPY . /worker/ docker-compose.yml redis: image: redis worker: build: ./worker command: npm start ports: - "9730:9730" volumes: - worker/:/worker/ …

22
ไม่สามารถเชื่อมต่อกับนักเทียบท่าจากนักแต่งเพลง
ฉันติดตั้ง docker-machine 0.1.0 และ docker-compose 1.1.0 บน Mac OS 10.8.5 นักเทียบท่าเครื่องทำงานได้ตามปกติและสามารถเชื่อมต่อด้วย ssh-docker-machine $ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM dev * virtualbox Running tcp://192.168.99.100:2376 อย่างไรก็ตามไม่สามารถเชื่อมต่อจากนักแต่งเพลงได้ $ docker-compose up ไม่สามารถเชื่อมต่อกับ Docker daemon ได้ที่ http + unix: //var/run/docker.sock - กำลังทำงานอยู่หรือไม่ หากอยู่ในตำแหน่งที่ไม่ได้มาตรฐานให้ระบุ URL ด้วยตัวแปรสภาพแวดล้อม DOCKER_HOST My Dockerfile และ docker-compose.yml อยู่ที่นี่ Dockerfile …

6
นักเทียบท่าเขียนขึ้นสำหรับภาชนะบางอย่างเท่านั้น
ฉันมีdocker-compose.ymlที่บรรจุหลาย สามตัวสำหรับแอพของฉัน (ไคลเอนต์เซิร์ฟเวอร์และฐานข้อมูล) และส่วนที่เหลือเป็นเครื่องมือ dev ต่าง ๆ (เช่น psql, npm, Manage.py, ฯลฯ ) เมื่อฉันdocker-compose upเริ่มต้นทั้งหมด แต่ฉันต้องการให้เริ่มหลักสามหลักเท่านั้น เนื่องจากลิงก์ที่ฉันระบุไว้ฉันสามารถเริ่มได้ทั้งสามด้วยdocker-compose up clientแต่จากนั้นเอาต์พุตจะมาจากคอนเทนเนอร์เดียวเท่านั้น ดังนั้นมีวิธีการทำอย่างใดอย่างหนึ่งต่อไปนี้: บอกนักเทียบท่าเขียนว่าคอนเทนเนอร์ใดควรเริ่มต้นด้วย docker-compose up รับเอาต์พุตจากคอนเทนเนอร์ที่เชื่อมโยงทั้งหมดจาก docker-compose up client

5
วิธีการส่งผ่านอาร์กิวเมนต์ไปยังจุดเข้าใช้งานใน docker-compose.yml
ฉันใช้รูปนี้: dperson / samba รูปภาพกำหนดจุดเข้าใช้งานของตัวเองและฉันไม่ต้องการแทนที่มัน ฉันต้องผ่านการขัดแย้งไปยังจุดเข้าใช้งานง่ายด้วยนักเทียบท่าเท่านั้น: docker run ... dperson/samba arg1 arg2 arg3 แต่จะทำอย่างไรกับ docker_compose.yml ตอนนี้ฉันใช้เป็นวิธีแก้ปัญหา: command: samba.sh arg1 arg2 arg3 แต่ก็ไม่เป็นที่น่าพอใจเมื่อฉันบังคับให้นิยามใหม่ของจุดเข้าใช้งาน

4
นักเขียน MySQL ข้อมูลถาวร
ฉันไม่สามารถรับข้อมูล MySQL ให้คงอยู่ได้หากฉันทำงาน$ docker-compose downกับสิ่งต่อไปนี้.yml version: '2' services: # other services data: container_name: flask_data image: mysql:latest volumes: - /var/lib/mysql command: "true" mysql: container_name: flask_mysql restart: always image: mysql:latest environment: MYSQL_ROOT_PASSWORD: 'test_pass' # TODO: Change this MYSQL_USER: 'test' MYSQL_PASS: 'pass' volumes_from: - data ports: - "3306:3306" ความเข้าใจของฉันคือว่าในdataภาชนะของฉันโดยใช้volumes: - /var/lib/mysqlแมปไปยังไดเรกทอรีเครื่องท้องถิ่นของฉันที่ mysql เก็บข้อมูลไปยังภาชนะและเนื่องจากการทำแผนที่นี้ข้อมูลควรจะยังคงอยู่แม้ว่าภาชนะจะถูกทำลาย …

16
นักเทียบท่า“ ข้อผิดพลาด: ไม่สามารถหากลุ่มที่อยู่ IPv4 ที่มีอยู่และไม่ทับซ้อนกันในค่าเริ่มต้นที่จะกำหนดให้กับเครือข่าย”
ฉันมีไดเรกทอรีที่apkmirror-scraper-composeมีโครงสร้างต่อไปนี้: . ├── docker-compose.yml ├── privoxy │ ├── config │ └── Dockerfile ├── scraper │ ├── Dockerfile │ ├── newnym.py │ └── requirements.txt └── tor └── Dockerfile ฉันพยายามที่จะเรียกใช้ต่อไปนี้docker-compose.yml: version: '3' services: privoxy: build: ./privoxy ports: - "8118:8118" links: - tor tor: build: context: ./tor args: password: "" ports: - "9050:9050" …

11
นักเทียบท่าบน Windows 10“ ไดรเวอร์ล้มเหลวในการเขียนโปรแกรมการเชื่อมต่อภายนอกบนอุปกรณ์ปลายทาง”
ฉันพยายามใช้$ docker-compose up -dสำหรับโปรเจ็กต์และได้รับข้อความแสดงข้อผิดพลาดนี้: ข้อผิดพลาด: สำหรับ api ไม่สามารถเริ่มต้นบริการ api: โปรแกรมควบคุมล้มเหลวในการเขียนโปรแกรมการเชื่อมต่อภายนอกบน endpoint dataexploration_api_1 (8781c95937a0a4b0b8da233376f71d2fc135f46aad011401c019eb3d14a0b117): ข้อผิดพลาดในการเริ่มต้นพร็อกซี userland: mkdir /port.0c.1000 พบข้อผิดพลาดขณะเปิดโครงการ ฉันสงสัยว่ามันอาจจะเป็นพอร์ตหรือไม่? ฉันเคยลองพอร์ต 8080 มาก่อน เดิมทีโปรเจ็กต์นี้ถูกตั้งค่าบน Mac และฉันได้โคลนที่เก็บจาก gitHub

1
นักเทียบท่า - แต่งขึ้นเทียบกับนักเทียบท่า - เขียนขึ้น - สร้างเทียบกับนักเทียบท่า - เขียนบิลด์ - ไม่มีแคช
ฉันคิดไม่ออกว่ามันต่างกันอย่างไร docker-compose up docker-compose up --build docker-compose build --no-cache มีคำสั่งสำหรับupไม่มีแคชหรือไม่?

3
ฉันควรใช้ Docker-compose up หรือ run?
มีเหตุผลที่จะใช้runในการเริ่มต้นdocker-compose.ymlไฟล์หรือคุณควรใช้up? ฉันเข้าใจว่าrunสามารถเริ่มคอนเทนเนอร์เฉพาะได้ แต่ฉันหมายถึงกรณีที่คุณใช้โดยไม่ได้ระบุคอนเทนเนอร์เพื่อให้เริ่มต้นคอนเทนเนอร์ yml ทั้งหมดของคุณ

12
ติดตั้ง Docker แล้ว แต่ Docker Compose ไม่ใช่? ทำไม?
ฉันได้ติดตั้งนักเทียบท่าบน centos 7 แล้วโดยเรียกใช้คำสั่งต่อไปนี้ curl -sSL https://get.docker.com/ | sh systemctl enable docker && systemctl start docker docker run hello-world หมายเหตุ: helloworld ทำงานได้อย่างถูกต้องและไม่มีปัญหา อย่างไรก็ตามเมื่อฉันพยายามเรียกใช้ docker-compose (มี docker-compose.yml อยู่และถูกต้อง) มันทำให้ฉันมีข้อผิดพลาดใน Centos เท่านั้น (เวอร์ชัน Windows ใช้งานได้ดีสำหรับไฟล์ docker-compose) /usr/local/bin/docker-compose: line 1: {error:Not Found}: command not found

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.