[root@c720120 docker]# cat docker-compose.yml node
version: "2"
services:
web:
image: fundamentalsofdocker/ch08-web:1.0
ports:
- 3000:3000
db:
image: fundamentalsofdocker/ch08-db:1.0
volumes:
- pets-data:/var/lib/postgresql/datawebvolumes:
pets-data:sql
[root@c720120 docker]# docker-compose up
Creating docker_web_1
Creating docker_db_1
Attaching to docker_web_1, docker_db_1
db_1 | 2018-06-06 03:31:29.456 UTC [1] LOG: listening on IPv4 address "0.0.0.0", port 5432
db_1 | 2018-06-06 03:31:29.456 UTC [1] LOG: listening on IPv6 address "::", port 5432
db_1 | 2018-06-06 03:31:29.473 UTC [1] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
db_1 | 2018-06-06 03:31:29.658 UTC [19] LOG: database system was interrupted; last known up at 2018-05-28 14:36:46 UTC
web_1 | Listening at 0.0.0.0:3000
db_1 | 2018-06-06 03:31:30.312 UTC [19] LOG: database system was not properly shut down; automatic recovery in progress
db_1 | 2018-06-06 03:31:30.317 UTC [19] LOG: redo starts at 0/15E7788
db_1 | 2018-06-06 03:31:30.317 UTC [19] LOG: invalid record length at 0/15E7868: wanted 24, got 0
db_1 | 2018-06-06 03:31:30.317 UTC [19] LOG: redo done at 0/15E7830
db_1 | 2018-06-06 03:31:30.370 UTC [1] LOG: database system is ready to accept connectionsdocker
[root@c720120 ~]# docker-compose up –dnpm
[root@c720120 docker]# docker-compose down
Removing docker_db_1 ... done
Removing docker_web_1 ... done
Removing network docker_default
json
docker volume rm ch08_pets-data後端
[root@c720120 docker]# docker-compose up --scale web=3
Creating network "docker_default" with the default driver
WARNING: The "web" service specifies a port on the host. If multiple containers for this service are created on a single host, the port will clash.
Creating docker_web_1 ... error
Creating docker_web_2 ... error
Creating docker_web_3 ... done
Creating docker_db_1 ... appERROR: for docker_web_2 Cannot start service web: b'driver failed programming external connectivity on endpoint docker_web_2 (08577c93fc049638fe034a078c0beaea7e43aca280fb1101046f914969d6e22d): Bind for 0.0.0.0:3000 failed: port is already allocated'socket
ERROR: for docker_web_1 Cannot start service web: b'driver failed programming external connectivity on endpoint docker_web_1 (1b839b479360b96fcd83aa69948ede428792089544c369b0d7a41f93f876c050): Bind for 0.0
Creating docker_db_1 ... donetcpERROR: for web Cannot start service web: b'driver failed programming external connectivity on endpoint docker_web_2 (08577c93fc049638fe034a078c0beaea7e43aca280fb1101046f914969d6e22d): Bind for 0.0.0.0:3000 failed: port is already allocated'
ERROR: Encountered errors while bringing up the project.
注意:在擴容服務時,報錯,這是因爲web服務使用3000端口,而第二個容器使用相同端口的話就會報錯。
[root@c720120 docker]# docker-compose down
Stopping docker_db_1 ... done
Stopping docker_web_3 ... done
Removing docker_db_1 ... done
Removing docker_web_1 ... done
Removing docker_web_2 ... done
Removing docker_web_3 ... done
Removing network docker_default
[root@c720120 docker]# cat docker-compose.yml
version: "2"
services:
web:
image: fundamentalsofdocker/ch08-web:1.0
ports:
- 3000
db:
image: fundamentalsofdocker/ch08-db:1.0
volumes:
- pets-data:/var/lib/postgresql/datavolumes:
pets-data:
[root@c720120 docker]# docker-compose up -d
Creating network "docker_default" with the default driver
Creating docker_web_1 ... done
Creating docker_db_1 ... done
[root@c720120 docker]# docker-compose scale web=3
WARNING: The scale command is deprecated. Use the up command with the --scale flag instead.
Starting docker_web_1 ... done
Creating docker_web_2 ... done
Creating docker_web_3 ... done
[root@c720120 docker]# docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------
docker_db_1 docker-entrypoint.sh postgres Up 5432/tcp
docker_web_1 /bin/sh -c node src/server.js Up 0.0.0.0:32769->3000/tcp
docker_web_2 /bin/sh -c node src/server.js Up 0.0.0.0:32771->3000/tcp
docker_web_3 /bin/sh -c node src/server.js Up 0.0.0.0:32770->3000/tcp
[root@c720120 docker]# cat docker-compose.dev.yml
version: "3.5"
serives:
web:
build: web
image: fundamentalsofdocker/ch08-web:1.0
ports:
- 3000:3000
db:
build: database
image: fundamentalsofdocker/ch08-db:1.0
volumes:
- pets-data:/var/lib/postgresql/datavolumes:
pets-data:
[root@c720120 docker]# docker-compose -f docker-compose.dev.yml build
Building web
Step 1/8 : FROM node:9.6-alpine
9.6-alpine: Pulling from library/node
605ce1bd3f31: Already exists
d9c1bb40879c: Already exists
d610e8516793: Already exists
Digest: sha256:7422a2653c781eb8280a9b811f0c5b605b54851fe458b09d9ccd6e04fbbca2ab
Status: Downloaded newer image for node:9.6-alpine
---> a88ff852e3d4
Step 2/8 : RUN mkdir /app
---> Running in 8682b617ceaf
Removing intermediate container 8682b617ceaf
---> 9a4a9446037f
Step 3/8 : WORKDIR /app
Removing intermediate container a32f8a2a0e50
---> ccf3294d5b31
Step 4/8 : COPY package.json /app/
---> b8168f45d652
Step 5/8 : RUN npm install
---> Running in 4c02c4300c8f
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN pets@1.0.0 No repository field.added 72 packages in 7.547s
Removing intermediate container 4c02c4300c8f
---> a15517e4c50f
Step 6/8 : COPY ./src /app/src
---> d0aadafe8907
Step 7/8 : EXPOSE 3000
---> Running in dd2cc2425dbe
Removing intermediate container dd2cc2425dbe
---> 1d9d1fa98ed2
Step 8/8 : CMD node src/server.js
---> Running in 5983df0ea47a
Removing intermediate container 5983df0ea47a
---> f0617a7838f1Successfully built f0617a7838f1
Successfully tagged fundamentalsofdocker/ch08-web:1.0
Building db
Step 1/5 : FROM postgres:10.2-alpine
10.2-alpine: Pulling from library/postgres
ff3a5c916c92: Already exists
a503b44e1ce0: Already exists
211706713093: Already exists
8df57d533e71: Already exists
7858f71c02fb: Already exists
55a8ef17ba59: Already exists
3fb44f23d323: Already exists
65cad41156b3: Already exists
5492a5bead70: Already exists
Digest: sha256:2cdf8430d7c1f59b3d3808f672944491aabf0fdf15da5b5e158e9fa4162453bf
Status: Downloaded newer image for postgres:10.2-alpine
---> 400ef39e0dbf
Step 2/5 : COPY init-db.sql /docker-entrypoint-initdb.d/
---> 02a6cc6e59b0
Step 3/5 : ENV POSTGRES_USER dockeruser
---> Running in de0ed866ac90
Removing intermediate container de0ed866ac90
---> d05dbfe63994
Step 4/5 : ENV POSTGRES_PASSWORD dockerpass
---> Running in e399bd4c3345
Removing intermediate container e399bd4c3345
---> fbf42b96b732
Step 5/5 : ENV POSTGRES_DB pets
---> Running in 4c811d6c99b9
Removing intermediate container 4c811d6c99b9
---> baaaf8ce22baSuccessfully built baaaf8ce22ba
Successfully tagged fundamentalsofdocker/ch08-db:1.0
[root@c720120 docker]# docker login -u fundamentalsofdocker -p <password>
[root@c720120 docker]# docker-compose -f docker-compose.dev.yml push Pushing web (fundamentalsofdocker/ch08-web:1.0)... The push refers to repository [docker.io/fundamentalsofdocker/ch08-web] f457d7916b75: Preparing 564bf5c38714: Preparing